gpt4 book ai didi

python - 如何在我的特定条件下在数据框中添加列?

转载 作者:行者123 更新时间:2023-12-05 02:30:29 26 4
gpt4 key购买 nike

我有一个包含列 id1 和 id2 的数据框 df1:

id1     id2
a1 b2
a6 b2
a3 c7

和另一个数据框 df2:

id      f1      f2    f3     f4    f5
a1 0 1 0 0 1
a2 0 1 1 0 1
b2 1 1 0 0 1
a6 1 1 0 0 1
a3 1 0 0 0 0
c7 1 0 0 0 1

我想为 id1 和 id2 中的那些 id 添加 df2 的 df1 列名称,并且该对具有相同的值。所以期望的结果是:

id1     id2    feature
a1 b2 f2,f5
a6 b2 f1,f2,f5
a3 c7 f1

最佳答案

您可以向 df2 添加一列,代表它包含的功能。

df2['f'] = df2.apply(lambda row: [c for c, v in zip(df2.columns[1:], row[1:]) if v], axis=1)
df2 = df2.set_index('id')
print(df2)

f1 f2 f3 f4 f5 f
id
a1 0 1 0 0 1 [f2, f5]
a2 0 1 1 0 1 [f2, f3, f5]
b2 1 1 0 0 1 [f1, f2, f5]
a6 1 1 0 0 1 [f1, f2, f5]
a3 1 0 0 0 0 [f1]
c7 1 0 0 0 1 [f1, f5]

然后在df1 上使用apply 来获取公共(public)部分的特性:

df1['feature'] = df1.apply(lambda row: ','.join(set(df2.loc[row['id1'], 'f']) & set(df2.loc[row['id2'], 'f'])), axis=1)
  id1 id2   feature
0 a1 b2 f5,f2
1 a6 b2 f1,f5,f2
2 a3 c7 f1

关于python - 如何在我的特定条件下在数据框中添加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71839280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com