【问题标题】:Multiple conditions in selecting pandas dataframe选择熊猫数据框的多个条件
【发布时间】:2016-11-11 00:55:50
【问题描述】:

我有两个相似的数据框。 df1 和 df2 具有相同的结构。并且它们在一列(policyID)中具有相同的数据,而其他列可能具有不同的数据,并且一列包含基于我需要隔离它们的时间戳。 df1 -

policyID,statecode,county,timestamp
114455,FL,CLAY COUNTY,2015-12-23

df2-

policyID,statecode,county,timestamp
114455,FL,CLAY COUNTY,2016-12-34

如果 df1 的时间戳较高,我需要创建一个新的数据框 df3,其中包含来自 df1 的数据,如果 df2 的时间戳较高,则包含来自 df2 的数据。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我认为你需要concatsort_values,最后需要groupbyfirstfirst

    print (df1)
                0    1             2           3
    0  114453   FL   CLAY COUNTY  2016-12-23
    1  114455  FL1  CLAY COUNTY1  2016-12-11
    2  114457  FL1  CLAY COUNTY1  2016-12-11
    
    print (df2)
            0    1             2           3
    0  114453  FL1  CLAY COUNTY1  2016-12-15
    1  114455  FL1  CLAY COUNTY1  2016-12-15
    2  114457  FL1  CLAY COUNTY1  2016-12-15
    
    df1.iloc[:,3] = pd.to_datetime(df1.iloc[:,3])
    df2.iloc[:,3] = pd.to_datetime(df2.iloc[:,3])
    
    df3 = pd.concat([df1,df2])
    df3 = df3.sort_values(df3.columns[3]).groupby(df3.columns[0]).first()
    print (df3)
              1             2          3
    0                                   
    114453  FL1  CLAY COUNTY1 2016-12-15
    114455  FL1  CLAY COUNTY1 2016-12-11
    114457  FL1  CLAY COUNTY1 2016-12-11
    

    df3 = pd.concat([df1,df2])
    df4 = df3.sort_values(df3.columns[3]).groupby(df3.columns[0]).last()
    print (df4)
              1             2          3
    0                                   
    114453   FL   CLAY COUNTY 2016-12-23
    114455  FL1  CLAY COUNTY1 2016-12-15
    114457  FL1  CLAY COUNTY1 2016-12-15
    

    【讨论】:

    • 我怀疑,drop_duplicate 会删除重复项,它将如何比较时间戳?如果没有 keep 参数,它将保存第一条记录,而与时间戳无关
    • 操作,对不起,给我秒
    • 请检查编辑 - 添加 sort_values 以按 timestamp 对数据帧进行排序
    • 在我的情况下,我从 csv 读取数据帧,参数 header=None 所以我的数据帧就像 df1 = 0 114455 FL CLAY COUNTY 2015-12-23 df2 = 0 114455 FL1 CLAY COUNTY1 2016-12- 15 因此,在运行 df3 = pd.concat([df1,df2],axis=1).sort_values(['18']).drop_duplicates(['crc]) 时,我无法对重复列上的值进行排序
    • 所以觉得可以加参数names=['policyID','statecode','county','timestamp']
    猜你喜欢
    • 2020-12-28
    • 2020-10-14
    • 2020-01-12
    • 2017-08-21
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2019-05-02
    • 2017-05-16
    相关资源
    最近更新 更多