我有一个名为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)
这符合要求-所有列都保持不变。