基于时间戳将panda中的行合并为一行



我有一个pandas数据帧,看起来像

Time       C1    C2
08:00:20   5     nan
08:00:40   nan   6
08:05:12   10    nan
08:05:32   nan   14  

我想将时间上密切相关的行合并为一行,并从我的数据帧中删除null,比如这个

Time    C1    C2
08:00   5     6
08:05   10    14

有人能帮我如何合并行以获得这样的输出吗

如果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

使用bfilldrop_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

相关内容

  • 没有找到相关文章