アラフォーから色々始めるリケジョの独り言

アラフォーになって色々始めてみました手探りでがんばります。

【Python】100本ノックやってます。p‐70~p-74

P-070: レシート明細データ(df_receipt)の売上日(sales_ymd)に対し、顧客データ(df_customer)の会員申込日(application_date)からの経過日数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。

型を調べると

sales_ymd            int64
customer_id         object
application_date     int64
dtype: object

どちらも数値じゃん。

そして20181103みたいな形は、一旦文字列にしてからdate型にしないといけないらしい。

astypeで2列ともdate一気にしたかったのにエラー出ちゃってできないので、とりあえず1行ずつ変換した。

とりあえず答えは出たのでいいかしら、、、

 

P-071: レシート明細データ(df_receipt)の売上日(sales_ymd)に対し、顧客データ(df_customer)の会員申込日(application_date)からの経過月数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1ヶ月未満は切り捨てること。

算数的に難しかった・・・(馬鹿)

「1か月未満は切り捨て」ってどっち方面???=-1どっちにも必要???

で躓きまくってました・・・

紙に線書いてるのにワカラナイのwww馬鹿すぎるwww

 

P-072: レシート明細データ(df_receipt)の売上日(df_customer)に対し、顧客データ(df_customer)の会員申込日(application_date)からの経過年数を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。1年未満は切り捨てること。

daysを365日で割ろうと思ったけど、型が違うからかな、できなかった。

なので、P-071で出したmonthsを12で割ってみた。

 

P-073: レシート明細データ(df_receipt)の売上日(sales_ymd)に対し、顧客データ(df_customer)の会員申込日(application_date)からのエポック秒による経過時間を計算し、顧客ID(customer_id)、売上日、会員申込日とともに10件表示せよ(なお、sales_ymdは数値、application_dateは文字列でデータを保持している点に注意)。なお、時間情報は保有していないため各日付は0時0分0秒を表すものとする。

dt.apply(lambda x: int(x.timestamp()))

を使って引き算。

解答は違ったのでちゃんと理解しておく。

 

P-074: レシート明細データ(df_receipt)の売上日(sales_ymd)に対し、当該週の月曜日からの経過日数を計算し、売上日、直前の月曜日付とともに10件表示せよ(sales_ymdは数値でデータを保持している点に注意)。

●日前(変数)を引く方法に四苦八苦。

-pd.to_timedelta(df_sales["sales_weekday"],unit='d')

でいけた!