使用Pandas处理CSV文件以进行文本比较



我有一个名为input.csv 的csv文件

KEY;Rate;BYld;DataAsOfDate
CH04;0.719;0.674;2020-01-29
CH03;1.5;0.148;2020-01-29

然后我执行以下代码:

import pandas as pd
input_df = pd.read_csv('input.csv', sep=";")
input_df.to_csv('output.csv', sep=";")

并获得以下output.csv文件

KEY;Rate;BYld;DataAsOfDate
CH04;0.7190000000000001;0.674;2020-01-29
CH03;1.5;0.14800000000000002;2020-01-29

我希望并期待着这样的输出:(能够使用winmerge.org这样的工具来检测每一行的实际差异((我的真实代码确实修改了数据帧——这个堆栈溢出示例仅用于演示(

KEY;Rate;BYld;DataAsOfDate
CH04;0.719;0.674;2020-01-29
CH03;1.5;0.148;2020-01-29

用Pandas实现这样一个未修改的输出的惯用方法是什么?

Python不使用传统的四舍五入来避免银行家四舍五进的问题。然而,如果接近不是问题,则可以使用round函数并替换";2〃;用你想四舍五入到的号码

d = [['CH04',0.719,0.674,'2020-01-29']]
df = pd.DataFrame(d, columns = (['KEY', 'Rate', 'BYld', 'DataAsOfDate']))
df['Rate'] = df['Rate'].apply(lambda x : round(x, 2))
df

使用@Prokos的想法,我更改了如下代码:

import pandas as pd
input_df = pd.read_csv('input.csv', dtype='str',sep=";")
input_df.to_csv('str_output.csv', sep=";", index=False)

这符合要求-所有列都保持不变。

相关内容

  • 没有找到相关文章