我正在尝试将具有相同时间戳的数据帧的所有行组合到一行中。 df是5k乘20。
A B ...
timestamp
11:00 NaN 10 ...
11:00 5 NaN ...
12:00 15 20 ...
... ... ...
将2个11:00行分组如下
A B ...
timestamp
11:00 5 10 ...
12:00 15 20 ...
... ... ...
任何帮助将不胜感激。谢谢。
我试过了
df.groupby( df.index ).sum()
答案 0 :(得分:0)
尝试使用resample
:
>>> df.resample('60Min', how='sum')
A B
2015-05-28 11:00:00 5 10
2015-05-28 12:00:00 15 20
更多示例可以在Pandas Documentation中找到。
答案 1 :(得分:0)
你不能在python中求和数和NaN。您可能需要使用.aggregate():)
答案 2 :(得分:0)
您可以melt
('unpivot')将DataFrame从宽格式转换为长格式,删除空值,然后通过groupby
汇总。
import pandas as pd
df = pd.DataFrame({'timestamp' : ['11:00','11:00','12:00'],
'A' : [None,5,15],
'B' : [10,None,20]
})
A B timestamp
0 NaN 10 11:00
1 5 NaN 11:00
2 15 20 12:00
df2 = pd.melt(df, id_vars = 'timestamp') # specify the value_vars if needed
timestamp variable value
0 11:00 A NaN
1 11:00 A 5
2 12:00 A 15
3 11:00 B 10
4 11:00 B NaN
5 12:00 B 20
df2.dropna(inplace=True)
df3 = df2.groupby(['timestamp', 'variable']).sum()
value
timestamp variable
11:00 A 5
B 10
12:00 A 15
B 20
df3.unstack()
value
variable A B
timestamp
11:00 5 10
12:00 15 20
答案 3 :(得分:0)
groupby
值替换为0后, NaN
。
df.fillna(0, inplace=True)
df.groupby(df.index).sum()