【问题标题】: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】:

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

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 2021-06-22
      • 2020-07-27
      • 2019-07-20
      • 2019-06-23
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多