使用Python比较CSV文件的列

ThatRiddimGuy

我有这样的CSV文件

ID  OLD_A  NEW_A  OLD_B     NEW_B     OLD_C  NEW_C
1   0      0      1/1/2017  1/1/2017  ABC    BCD
2   0      0      1/1/2017  2/1/2017  ABC    ABC
3   1      2      1/1/2017  1/1/2017  ABC    BCD

我想比较A,B和C的旧列和新列,以防OLD和NEW的值存在差异(有10k +行),我想返回这样的输出(来自上面的示例):

ID Field_Changed OLD_Value   NEW_Value
1  C             ABC         BCD
2  B             1/1/2017    2/1/2017
3  A             1           2
3  C             ABC         BCD

到目前为止,我已经使用了pandas.DataFrame的.loc方法,该方法返回限定布尔索引的行的索引位置,但是我也需要这些值...

df.loc[(df['OLD_A'] != df['NEW_A'])].index)

我是python脚本的新手,似乎无法弄清楚逻辑。有人可以帮忙吗?

耶斯列尔

set_index并建立MultiIndexsplit列名

stack 并重命名列

过滤 boolean indexing

df = df.set_index('ID')

df.columns = df.columns.str.split('_', expand=True)
df1 = df.stack()[['OLD','NEW']].reset_index().rename(columns={'level_1':'Field_Changed'})
print (df1)
   ID Field_Changed       OLD       NEW
0   1             A         0         0
1   1             B  1/1/2017  1/1/2017
2   1             C       ABC       BCD
3   2             A         0         0
4   2             B  1/1/2017  2/1/2017
5   2             C       ABC       ABC
6   3             A         1         2
7   3             B  1/1/2017  1/1/2017
8   3             C       ABC       BCD

print (df1.columns)
Index(['ID', 'Field_Changed', 'OLD', 'NEW'], dtype='object')

print (df1.index)
RangeIndex(start=0, stop=9, step=1)
print (df1['OLD'] != df1['NEW'])
0    False
1    False
2     True
3    False
4     True
5    False
6     True
7    False
8     True
dtype: bool

df2 = df1[df1['OLD'] != df1['NEW']]
print (df2)
   ID Field_Changed       OLD       NEW
2   1             C       ABC       BCD
4   2             B  1/1/2017  2/1/2017
6   3             A         1         2
8   3             C       ABC       BCD

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python Pandas进行CSV列比较

Python比较2个CSV文件的列并写入新的CSV

使用 Python 3.8 比较没有相同 csv 文件标题的两列并输出匹配值

比较2个csv文件之间的列并使用Python编写差异

比较两个csv文件并使用python获得区别

比较同一CSV文件的多列,然后使用Python将结果返回到另一个CSV文件

将多个文本文件中的列与 csv 列文件 python 进行比较

使用python汇总.csv文件中的列

使用python添加csv文件的列

使用Python将列插入CSV文件

使用Python在CSV文件中添加列

使用 Python 更新 csv 文件的列值

比较CSV文件中两列的数据

如何使用python将一列的每个单元格与csv文件中另一列的每个单元格进行比较?

比较CSV文件-Python 3(入门)

如何比较两个csv文件并使用python在新文件中写入1或0

将csv文件列表与csv文件列表进行比较-Python

使用列表比较和更新CSV文件

使用python比较xml文件

如何在python中将csv文件的列与图像名称进行比较?

使用熊猫比较具有不同列数的大型CSV文件

通过比较列中的值(使用awk)来打印CSV文件中的差异

比较CSV文件和提取列时输出CSV的问题

比较 2 列 csv 文件不匹配的文件

在使用python将其写入csv文件之前将值与字段名进行比较

我如何使用 python 比较目录中内容与 csv 文件的差异?

比较python中文件夹中所有csv文件之间的一列并输出结果

Python比较CSV文件和文本文件

使用awk比较相同文件的列