【问题标题】:merging rows to a single row in pandas based on timestamp根据时间戳将行合并到熊猫中的单行
【发布时间】:2020-03-16 12:11:36
【问题描述】:
我有一个看起来像的熊猫数据框
Time C1 C2
08:00:20 5 nan
08:00:40 nan 6
08:05:12 10 nan
08:05:32 nan 14
我想将时间上密切相关的行合并为一行,并从我的数据框中删除空值,就像这样
Time C1 C2
08:00 5 6
08:05 10 14
有人可以帮助我如何合并行以获得这样的输出
【问题讨论】:
标签:
python
pandas
dataframe
null
【解决方案1】:
如果Time 是字符串,则使用前5 个值进行索引并传递给GroupBy.first:
df1 = df.groupby(df.pop('Time').str[:5]).first().reset_index()
print (df1)
Time C1 C2
0 08:00 5.0 6.0
1 08:05 10.0 14.0
如果datetime 在列中使用Series.dt.strftime:
df['Time'] = pd.to_datetime(df['Time'])
df1 = df.groupby(df.pop('Time').dt.strftime('%H:%M')).first().reset_index()
print (df1)
Time C1 C2
0 08:00 5.0 6.0
1 08:05 10.0 14.0
【解决方案2】:
使用bfill 和drop_duplicates:
df['Time'] = pd.to_datetime(df['Time']).dt.strftime('%H:%M')
df[['C1', 'C2']] = df.groupby('Time').bfill()
df.drop_duplicates('Time')
Time C1 C2
0 08:00 5.0 6.0
2 08:05 10.0 14.0