【发布时间】:2021-12-28 15:23:29
【问题描述】:
我有一个如下所示的数据框:
df = pd.DataFrame({'a':[1,0,1],'b':[0,1,0],'b1':[1,0,0],'c':[0,1,1]})
df.columns = ['a','b','b','c']
>>> df
a b b c
0 1 0 1 0
1 0 1 0 1
2 1 0 0 1
我想将这两个不同的b 列合并在一起,如下所示:
a b c
0 1 1 0
1 0 1 1
2 1 0 1
我知道我可以在按位上下文中使用 | (OR) 来组合它们,例如与a 和c:
>>> df['a'] | df['c']
0 1
1 1
2 1
dtype: int64
但我无法选择两个单独的 b 列,因为:
>>> df['b']
b b
0 0 1
1 1 0
2 0 0
>>> df['b']['b']
b b
0 0 1
1 1 0
2 0 0
>>> df['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']
b b
0 0 1
1 1 0
2 0 0
【问题讨论】:
-
你应该为“join”指定一些规则(它实际上不是一个join)。在这种情况下,我从数据中解释您的列仅包含 0 或 1,并且 1 覆盖了 0。就这些了吗?
-
是的@Ric。我希望
b以1,1,0结尾,因为这两个b是0,1,0和1,0,0。 -
df["b"].sum(axis=1).clip(0, 1)?或df["b"].apply(lambda x: x[0]|x[1], axis=1) -
df.T.drop_duplicates().T如果你想删除额外的 B 列 -
很好@Chris - 这也很有用。我确实想放弃多余的。