繁体   English   中英

在条件 Pandas 上加入 DataFrames

[英]Join DataFrames on Condition Pandas

我有以下两个要合并的具有二进制值的数据框。

df1

    Action  Adventure   Animation   Biography   
0   0       1           0           0   
1   0       0           0           0   
2   1       0           0           0   
3   0       0           0           0   
4   1       0           0           0

df2

    Action  Adventure   Biography   Comedy  
0   0       0           0           0   
1   0       0           1           0   
2   0       0           0           0   
3   0       0           0           1   
4   1       0           0           0   

我想以结果具有不同列的方式连接这两个数据帧,如果在一个数据帧中值为 1,则结果为 1,否则为 0。

结果

    Action  Adventure   Animation   Biography   Comedy
0   0       1           0           0           0
1   0       0           0           1           0
2   1       0           0           0           0
3   0       0           0           0           1 
4   1       0           0           0           0

我坚持这一点,所以我没有建议的解决方案。

让我们add两个数据框,然后clip上限值:

df1.add(df2, fill_value=0).clip(upper=1).astype(int)

   Action  Adventure  Animation  Biography  Comedy
0       0          1          0          0       0
1       0          0          0          1       0
2       1          0          0          0       0
3       0          0          0          0       1
4       1          0          0          0       0

将其视为设定问题可能会给您解决方案。 看看代码。

print((df1 | df2).fillna(0).astype(int) | df2)

完整代码:

import pandas as pd

df1 = pd.DataFrame(
    {
        'Action':[0, 0, 1, 0, 1],
        'Adventure':[1, 0, 0, 0, 0],
        'Animation':[0, 0, 0, 0, 0],
        'Biography':[0, 0, 0, 0, 0]
    }
)

df2 = pd.DataFrame(
    {
        'Action':[0, 0, 1, 0, 1],
        'Adventure':[1, 0, 0, 0, 0],
        'Animation':[0, 0, 0, 0, 0],
        'Biography':[0, 1, 0, 0, 0],
        'Comedy':[0, 0, 0, 1, 0]
    }
)

print((df1 | df2).fillna(0).astype(int) | df2)

输出:

   Action  Adventure  Animation  Biography  Comedy
0       0          1          0          0       0
1       0          0          0          1       0
2       1          0          0          0       0
3       0          0          0          0       1
4       1          0          0          0       0

暂无
暂无

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

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