简体   繁体   English

不同长度的多个数据帧之间的共同值

[英]Common values between multiple dataframes with different length

I have 3 huge dataframes that have different length of values我有 3 个具有不同长度值的巨大数据框

Ex,前任,

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

I want to find the common values between the three columns like this我想像这样找到三列之间的共同值

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

I tried (from here )我试过(从这里

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

but I get this error, ValueError: Length of values does not match length of index但我收到此错误, ValueError: Length of values does not match length of index

Idea is create Series with index filtered by indexing with length of array:想法是创建带有索引过滤的Series ,该索引通过数组长度的索引进行过滤:

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

If same DataFrame:如果相同的 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM