【问题标题】:Common values between multiple dataframes with different length不同长度的多个数据帧之间的共同值
【发布时间】:2020-10-04 19:53:39
【问题描述】:

我有 3 个具有不同长度值的巨大数据框

例如,

A         B         C         
2981     2952     1287
2759     2295     2952
1284     2235     1284
1295     1928     0887
2295     1284     1966
         1567     1928
         1287     2374
                  2846
                  2578

我想像这样找到三列之间的共同值

A         B         C     Common          
2981     2952     1287     1284
2759     2295     2952     2295
1284     2235     1284
1295     1928     0887
2295     1284     1966
         1567     2295
         1287     2374
                  2846
                  2578

我试过了(来自here

df1['Common'] = np.intersect1d(df1.A, np.intersect1d(df2.B, df3.C))             

但我收到此错误,ValueError: Length of values does not match length of index

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    想法是创建Series,索引通过数组长度的索引过滤:

    a = np.intersect1d(df1.A, np.intersect1d(df2.B, df3.C))
    df1['Common'] = pd.Series(a, index=df1.index[:len(a)])
    

    如果相同的DataFrame:

    a = np.intersect1d(df1.A, np.intersect1d(df1.B, df1.C))
    df1['Common'] = pd.Series(a, index=df1.index[:len(a)])
    print (df1)
            A       B     C  Common
    0  2981.0  2952.0  1287  1284.0
    1  2759.0  2295.0  2952  2295.0
    2  1284.0  2235.0  1284     NaN
    3  1295.0  1928.0   887     NaN
    4  2295.0  1284.0  1966     NaN
    5     NaN  1567.0  2295     NaN
    6     NaN  1287.0  2374     NaN
    7     NaN     NaN  2846     NaN
    8     NaN     NaN  2578     NaN
    

    【讨论】:

      猜你喜欢
      • 2018-12-05
      • 2021-11-14
      • 2016-11-03
      • 2020-04-19
      • 1970-01-01
      • 2021-07-07
      • 2021-03-20
      • 2016-08-27
      • 2019-02-27
      相关资源
      最近更新 更多