我正在用pandas清理csv文件,主要是删除特殊字符,如('/','#'等)。该文件有7列(没有一列是日期)。
在某些列中,只有数字数据,如'11/6/1980'。
我注意到直接在阅读csv文件后,
df = pd.read_csv ('report16.csv', encoding ='ANSI')
此数据变为'11/6/80',清理后变为'11 6 80'(输出文件中的结果相同)。因此,只要数据中有'/',它就被解释为日期,python将从数据中删除前两位数字。
不是答案,但是注释不允许包含良好呈现的代码和数据。
这是一个我称之为最小可复制的例子:
sample.csv文件的内容:
Data,Expected result,Actual Result
11/6/1980,11 6 1980,11 6 80
12/8/1983,12 8 1983,12 8 83
代码:
df = pd.read_csv('sample.csv')
print(df)
s = df['Data'].str.replace('/', ' ')
print((df['Expected result'] == s).all())
给出:
Data Expected result Actual Result
0 11/6/1980 11 6 1980 11 6 80
1 12/8/1983 12 8 1983 12 8 83
True
这证明read_csv
正确地读取了文件并且没有更改任何内容。
请将CSV文件的内容显示为文本,以及足够的代码来重现您的问题。
如何尝试字符串操作?!首先选择要修改并替换的列"/"或"#";column.str.replace("/", ";")。我希望这能成功!
转换日期的行为不是严格意义上的python问题。您正在使用pandas read_csv.
尝试显式声明一个分隔符。如果sep未声明,则进行猜测。
df = pd.read_csv ('report16.csv', encoding ='ANSI', sep =',')