Python 熊猫:为什么csv列中的浮点数据有时在导入后成为对象?
我有两个csv文件,列相同,但数据不同。将它们导入pandas后,其中一个中的Python 熊猫:为什么csv列中的浮点数据有时在导入后成为对象?,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我有两个csv文件,列相同,但数据不同。将它们导入pandas后,其中一个中的cost列的数据类型为float,而另一个中的object 我发现了一个,在这种情况下,答案是“这是一个错误,我有点困惑。您说您有两个CSV文件,但我看不到CSV文件的内容,只看到导入后生成的序列。所以很难弄清楚到底发生了什么。其中一行中是否有空白字段、nan、未定义或其他字符串?这可能会帮助您找到问题行。thx Tom。没有nan、空白或其他字符串。很抱歉,由于数据敏感,我无法上载csv文件。但是我上传了更多的信息。
cost
列的数据类型为float
,而另一个中的object
我发现了一个,在这种情况下,答案是“这是一个错误,我有点困惑。您说您有两个CSV文件,但我看不到CSV文件的内容,只看到导入后生成的序列。所以很难弄清楚到底发生了什么。其中一行中是否有空白字段、nan、未定义或其他字符串?这可能会帮助您找到问题行。thx Tom。没有nan、空白或其他字符串。很抱歉,由于数据敏感,我无法上载csv文件。但是我上传了更多的信息。希望他们能有所帮助。再次感谢。在您的第一个代码段中,您得到了不受支持的操作数错误,该错误意味着“cost”列在其中一行中有一个字符串。在第二个代码段中,您将写出中间数据帧,当读回该数据帧时,将导致“cost”列不再包含字符串。所以我又回到了试图找出“坏”数据的位置。更糟糕的情况是,你可以把文件切成两半,然后试着每一半看看它是否有效。继续这样的二进制搜索,直到您分离出导致问题的行。Tom:),谢谢您宝贵的想法。
# csv 1: before pd.to_numeric
count 174526
unique 84873
top 0.41
freq 505
Name: cost, dtype: object
# csv 1: after pd.to_numeric
count 1.745260e+05
mean 3.608746e+04
std 4.690326e+05
min 1.000000e-02
25% 1.040000e+01
50% 1.190400e+02
75% 1.433350e+03
max 5.400000e+07
Name: cost, dtype: float64
# csv 2:
count 2.578860e+05
mean 1.588632e+04
std 3.295925e+05
min 1.000000e-02
25% 2.820000e+00
50% 2.109000e+01
75% 2.426200e+02
max 6.030000e+07
Name: cost, dtype: float64
df = pd.read_csv('file_name.csv',low_memory=False)
df = df[df.Cloumn1 != 'Value1']
df.to_csv('new_file_name.csv', index=False)
df = pd.read_csv('new_file_name.csv', low_memory=False)
df['cost_T'] = df['cost'] / 1000
df.to_csv('final_file_name.csv', index=False)
"""
everything is fine.
"""