前提・実現したいこと
csvファイルからデータを取得し、csvファイルの中を読み取り、その内容に新たな値を追加した列を追加したいです。
以下のようなcsvファイルがあります。
product type Product-date
daifuku wet 2020-10-07
senbei dry 2020-9-29
...
monaka wet 2020-09-23
dango wet 2020-10-01
okaki dry 2020-10-02
新たに消費期限(limit-date)という列を作成し、
このtypeがdryだった場合は、product-dateに二週間追加した値を、
wetだった場合には1週間追加した値を格納したいです。
また、csvファイルはデータ量が多く、1万行ほどあります。
実現したいこと
product type Product-date limit-date
daifuku wet 2020-10-07 2020-10-14
senbei dry 2020-09-29 2020-10-13
...
monaka wet 2020-09-23 2020-09-30
dango wet 2020-10-01 2020-10-08
okaki dry 2020-10-02 2020-10-16
発生している問題・エラーメッセージ
sys: file.py:11;SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy df['limit-date'][index] = '-'
該当のソースコード
python
1import csv 2import datetime 3import pandas as pd 4 5try: 6 df = pd.read_csv(file) 7 df= df.assign(limit-date = 0) 8 9 for index, row in df.terrows(): 10 if df['type'][index] != 'wet' or df['type'][index] != 'dry': 11 df['limit-date'][index] = '-' 12 else : 13 if df['type'][index] = 'wet': 14 df['limit-date'][index] = datetime.datetime.strptime(df['product-date'][index])+ datetime.timedelta(days = 7) 15 elif df['type'] != 'dry' : 16 df['limit-date'][index] = datetime.datetime.strptime(df['product-date'][index])+ datetime.timedelta(days = 14) 17 18 df.to_csv('to_csv_out_a.csv', mode='w')
試したこと
書き換えて試しましたが、不明です。
また、上記エラー文を吐いて固まります。
プログラミング初心者でpandasも初めて使用するため、
DateFrameについても、全体的についても理解が足りず、試行錯誤してますorz。
補足情報(FW/ツールのバージョンなど)
python 3.5
pandas 1.1.3
回答1件
あなたの回答
tips
プレビュー