[英]How can i sum specific month value with date in pandas frame?
我有一個像這樣的數據集
ID,日期,NO,月
1,24 / 04 / 2019,6,2019 / 09
1,24 / 04 / 2019,7,2019 / 09
我還有幾個月要在DATE欄上做廣告。 例如我想在新列中看到2019年4月24日加上6個月-> 2019/10
錯誤是:
TypeError:只能將str(而不是“ int”)連接到str
import pandas as pd
dataset = pd.read_csv("denemedf.txt", delimiter=",")
print(dataset['DATE'])
dataset['ADDED'] = 0 #new column
data_to_Array = np.asarray(dataset['DATE'])
#print(data_to_Array)
numbers = [3,6]
for i in range(len(data_to_Array)):
added_value = data_to_Array[i] + numbers[i]
dataset['ADDED'][i] = added_value
from datetime import datetime
print ( dataset['ADDED'].strftime("%Y/%m") )
我如何在數據集['ADDED']中看到這個結果,就像今年/月一樣?
我希望我解釋清楚我想做什么。
預期結果是這樣的:
ID,DATE,NO,MONTH,ADD
1,24 / 04 / 2019,6,2019 / 09,2019 / 7
1,24 / 04 / 2019,7,2019 / 09,2019 / 10
您首先應該使用此函數將DATE列字符串轉換為datetime。 然后,您可以使用lambda函數使用pandas DateOffset創建新列。
dataset = pd.DataFrame({'DATE': ['24/04/2019', '24/04/2019'], 'NO': [6,7]})
dataset['DATE'] = dataset.apply(lambda x: datetime.datetime.strptime(x['DATE'], '%d/%m/%Y'), axis=1)
dataset['ADDED'] = dataset.apply(lambda x: x['DATE'] + pd.DateOffset(months=x['NO']), axis=1)
通過Series.dt.to_period
使用月份,因此可以增加列表或列中的天數,最后通過strftime
將輸出轉換為字符串:
numbers = [3,6]
s = pd.to_datetime(df['DATE']).dt.to_period('m')
df['ADDED'] = (s + np.array(numbers)).dt.strftime("%Y/%m")
print (df)
ID DATE NO MONTH ADDED
0 1 24/04/2019 6 2019/09 2019/07
1 1 24/04/2019 7 2019/09 2019/10
如果需要添加NO
列:
s = pd.to_datetime(df['DATE']).dt.to_period('m')
df['ADDED'] = (s + df['NO']).dt.strftime("%Y/%m")
print (df)
ID DATE NO MONTH ADDED
0 1 24/04/2019 6 2019/09 2019/10
1 1 24/04/2019 7 2019/09 2019/11
看起來你需要
import pandas as pd
numbers = [3,6]
df = pd.read_csv(filename, parse_dates=["DATE"])
df["ADDED"] = [(d + pd.DateOffset(months=mon)) for d, mon in zip(df["DATE"], numbers)]
df["ADDED"] = df["ADDED"].dt.strftime("%Y/%m")
print(df)
輸出:
ID DATE NO MONTH ADDED
0 1 2019-04-24 6 2019/09 2019/07
1 1 2019-04-24 7 2019/09 2019/10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.