如何组合具有相同时间戳的行?

时间:2015-05-28 20:30:03

标签: python pandas

我正在尝试将具有相同时间戳的数据帧的所有行组合到一行中。 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()

4 个答案:

答案 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()