[英]Add two pandas DataFrame with dates and float
我有兩個看起來像這樣的數據幀:
date bin value
0 2013-11-01 100 1
1 2013-12-01 200 1
date bin value
0 2013-11-01 100 2
1 2013-12-01 300 5
2 2013-10-01 100 10
我想找到每個日期和bin的值總和,即最終數據框應為:
date bin value
0 2013-11-01 100 3
1 2013-12-01 200 1
2 2013-12-01 300 15
3 2013-10-01 100 10
(索引和順序並不重要)
當我嘗試:
df.add(df2, fill_value = 0)
但我收到以下錯誤:
TypeError: ufunc add cannot use operands with types dtype('O') and dtype('<M8[ns]')
我也嘗試過使用MultiIndex,但之后卻沒有設置雙精度(日期,bin)索引。
任何想法如何使其工作?
您確實可以通過將這兩列(日期和bin)設置為多索引來做到這一點,然后使用add
指定填充值(否則將獲得NaN):
In [65]: df1b = df1.set_index(['date', 'bin'])
In [66]: df2b = df2.set_index(['date', 'bin'])
In [67]: df1b + df2b
Out[67]:
value
date bin
2013-10-01 100 NaN
2013-11-01 100 3
2013-12-01 200 NaN
300 NaN
In [68]: df1b.add(df2b, fill_value = 0)
Out[68]:
value
date bin
2013-10-01 100 10
2013-11-01 100 3
2013-12-01 200 1
300 5
另一個選擇是連接兩個框架,然后按兩列date和bin分組:
In [71]: df = pd.concat([df1, df2], ignore_index=True)
In [72]: df
Out[72]:
date bin value
0 2013-11-01 100 1
1 2013-12-01 200 1
2 2013-11-01 100 2
3 2013-12-01 300 5
4 2013-10-01 100 10
In [73]: df.groupby(['date', 'bin']).sum()
Out[73]:
value
date bin
2013-10-01 100 10
2013-11-01 100 3
2013-12-01 200 1
300 5
您收到上述錯誤消息的原因是,顯然df1
和df2
某個列的dtypes不匹配。 但是無論如何,僅添加兩個數據幀是行不通的,因為您無法添加日期時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.