【发布时间】:2019-06-18 21:32:37
【问题描述】:
我正在使用 pandas 比较两个 excel 文件并监视某些列以识别所做的任何更改。目前,我正在创建一个布尔列来查看 df1 中的 A 列是否等于 df2 中的 A 列,这为我提供了一个新的 True/False 值列。我对新旧数据框中的 B 列做同样的事情。我在创建“主更改”列时遇到问题,该列会告诉我是否在我正在检查的列中的一个或两个中进行了更改。
现在,我的“主更改”列检查布尔列检查列 A 和 B 是否相等。如果只有 1 列发生更改(ColA = True,ColB = False),我的“主更改列正确地将其标记为 False,因此我稍后可以将其识别为需要更新的行。 但是,当两列(ColA=False,ColB=False)发生更改时,我的“主更改”列将该行标记为 True,正如预期的那样。
old_data = [[1, 'red', 'short'], [2, 'blue', 'medium'],[3, 'green', 'long']]
new_data = [[1, 'red', 'short'], [2, 'green', 'long'],[3, 'green', 'short']]
df1 = pd.DataFrame(old_data, columns=['ID_num', 'original_color', 'original_length'])
df2 = pd.DataFrame(new_data, columns=['ID_num', 'current_color', 'current_length'])
df_combined = pd.merge(df1, df2, on='ID_num', how='left')
df_combined['color_change'] = df_combined['current_color'] == df_combined['original_color']
df_combined['length_change'] = df_combined['current_length'] == df_combined['original_length']
df_combined['master_change'] = df_combined['color_change'] == df_combined['length_change']
df_combined['master_change']
这给了我一个“master_change”列值:
正确
真的
假的
如果颜色和长度值都发生了变化,如何让 pandas 在“master_change”列中给我一个 False 值? (即,假,假-->假)
【问题讨论】:
标签: python python-3.x pandas dataframe