【发布时间】:2021-07-23 20:46:02
【问题描述】:
我有 1 个数据框,想要检查然后返回相同数据框的两列之间的值差异,前提是第 2 列中有值。下面我的示例中的第二列是 AppliancesO,第一列是 AppliancesH
Item Name AppliancesH AppliancesO
1 Joe TV TV
2 Mary [TV; Fridge] TV
3 Jack [Microwave;TV;Fridge] [Computer;TV;Fridge]
4 Pete [Fridge;Oven]
还有 1000 多行
我正在寻找的输出是
Item Name AppliancesH AppliancesO Diff
1 Joe TV TV
2 Mary [TV; Fridge] TV Fridge
3 Jack [Microwave;TV;Fridge] [Computer;TV;Fridge] [Microwave;Computer]
4 Pete [Fridge;Oven]
我知道如何比较列以确定它们是否不同,但我不知道如何返回差异
df.loc[(df['AppliancesH']!=df['AppliancesO'])& ~df.AppliancesO.isna()][['Name','AppliancesH', 'AppliancesO','Diff']]
【问题讨论】:
-
您的代表正式吗?例如,
[Microwave;TV;Fridge]是一个字符串列表还是包含字符串的列表? -
是字符串列表
-
重点是,在python中,列表分隔符是comma,而不是semi-colon。所以,
[Microwave;TV;Fridge]最多是一个只包含一个字符串的列表,即包含"Microwave;TV;Fridge"。 -
还有什么不清楚的是为什么你不处理异构类型的列。为什么有些数据只是字符串,而有些数据是字符串列表?
-
为什么不使用只有一个组件的列表。 Special cases aren't special enough to break the rules.
标签: pandas dataframe multiple-columns