我有2个csv文件,它们具有相同的列,但不同的数据。将它们导入熊猫后,其中一个的cost
列的dtype是float
,而另一个的object
的dtype。
我发现一个similar question,在这种情况下,答案是“这是a bug in <=0.12(但在0.13中固定)”。
但是问题是:我的两个csv文件都具有类似的最小编号,1.000000e-02
都不是blank value
。
(我在PyCharm2018.2上使用Python 3.7,Pandas 0.23.4)
# 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
换一种说法,如果我将代码分为两部分,那么 csv2 的一切都很好:
df = pd.read_csv('file_name.csv',low_memory=False)
df = df[df.Cloumn1 != 'Value1']
df['cost_T'] = df['cost'] / 1000
df.to_csv('new_file_name.csv', index=False)
"""
TypeError: unsupported operand type(s) for /: 'str' and 'int'
"""
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.
"""
如果有人有任何想法,请告诉我。