作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含列 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/
我是一名优秀的程序员,十分优秀!