我有这样一个数据帧:
我需要得到一个新的列“Result”,在这里我比较第1部分到第6部分列中的所有值,如果任意两列中的文本相同,则结果为真,反之亦然。 它必须是这样的:
有什么简单的方法吗? 我试过这样的方法:
df['Result'] = (df['part1']==df['part2']) | (df['part1']==df['part3']) | (df['part1']==df['part4']) | (df['part1']==df['part5']) | (df['part2']==df['part3']) | (df['part2']==df['part4']) | (df['part2']==df['part5']) |(df['part3']==df['part4']) | (df['part3']==df['part5']) | (df['part4']==df['part5'])
但这种方式太奇怪和不舒服了,我相信它有更好的解决办法。(在我的任务中,我必须比较21列)
在你的情况下,试试看
这个答案是针对问题的前一个版本编写的,其中
part1
与所有其他列进行比较,而不是搜索任何重复的part#
值执行基于索引的相等性比较,然后跨行使用
any
进行缩减(通过指定columns
,这是有意义的,但不太直观)请注意,我使用
filter
快速选择part2
part6
列,也可以手动指定。必须将axis='index'
和axis='columns'
(或相应的int
)分别传递给df.eq
和df.any
,才能正确地进行比较和缩减相关问题 更多 >
编程相关推荐