如何使用pandas read_csv从csv文件中正确读取数字、日期和字符串?
我有一个csv文件(data.csv),如下所示:如何使用pandas read_csv从csv文件中正确读取数字、日期和字符串?,pandas,string,csv,types,numbers,Pandas,String,Csv,Types,Numbers,我有一个csv文件(data.csv),如下所示: DF = read_csv(pth).T DF 0 1 2 A 1.50 2020-1-1 John B 2.70 2020-1-2 Jeff C 2,481 2020-1-3 Ruben D 1,569 2020-1-4 Cath E 2.15 2020-1-5 James DF[0] = DF[0].str.replace(",&quo
DF = read_csv(pth).T
DF
0 1 2
A 1.50 2020-1-1 John
B 2.70 2020-1-2 Jeff
C 2,481 2020-1-3 Ruben
D 1,569 2020-1-4 Cath
E 2.15 2020-1-5 James
DF[0] = DF[0].str.replace(",","").astype(float)
DF
0 1 2
A 1.50 2020-1-1 John
B 2.70 2020-1-2 Jeff
C 2481.00 2020-1-3 Ruben
D 1569.00 2020-1-4 Cath
E 2.15 2020-1-5 James
df = read_csv(pth)
df.iloc[0,:] = df.iloc[0,:].str.replace(",", "").astype(float)
df
A B C D E
0 1.5 2.7 2481.0 1569.0 2.15
1 2020-1-1 2020-1-2 2020-1-3 2020-1-4 2020-1-5
2 John Jeff Ruben Cath James
A、B、C、D、E
1.50,2.70,"2,481","1,569",2.15
2020-1-1,2020-1-2,2020-1-3,2020-1-4,2020-1-5
约翰、杰夫、鲁本、凯丝、詹姆斯
我试图使用df=pd.read_csv(“data.csv”,数千=”,”)我得到了df=
abcde
0 1.5 2.7 2,481 1,569 2.15
1 2020-1-1 2020-1-2 2020-1-3 2020-1-4 2020-1-5
约翰·杰夫·鲁本·凯思·詹姆斯
看起来不错,但实际上所有数字和日期都是df中的字符串,而Excel可以正确读取/转换它们
如何从csv文件中正确读取数字、日期和字符串?处理此问题的首选方法是正常读取,采用转置并按列处理,如下所示:
DF = read_csv(pth).T
DF
0 1 2
A 1.50 2020-1-1 John
B 2.70 2020-1-2 Jeff
C 2,481 2020-1-3 Ruben
D 1,569 2020-1-4 Cath
E 2.15 2020-1-5 James
DF[0] = DF[0].str.replace(",","").astype(float)
DF
0 1 2
A 1.50 2020-1-1 John
B 2.70 2020-1-2 Jeff
C 2481.00 2020-1-3 Ruben
D 1569.00 2020-1-4 Cath
E 2.15 2020-1-5 James
df = read_csv(pth)
df.iloc[0,:] = df.iloc[0,:].str.replace(",", "").astype(float)
df
A B C D E
0 1.5 2.7 2481.0 1569.0 2.15
1 2020-1-1 2020-1-2 2020-1-3 2020-1-4 2020-1-5
2 John Jeff Ruben Cath James
然后,您还拥有具有正确类型的系列(列):
DF[0]
A 1.50
B 2.70
C 2481.00
D 1569.00
E 2.15
Name: 0, dtype: float64 #<<<<< float
那你就可以这么做了
df.iloc[0,0] + df.iloc[0,2]
2482.5
但行本身仍然是一个对象而不是浮动,这在某些情况下可能是一个缺点:
df.iloc[0,:]
A 1.50
B 2.70
C 2481.00
D 1569.00
E 2.15
Name: 0, dtype: object <<<< object
df.iloc[0,:]
A 1.50
B 2.70
C 2481.00
D 1569.00
E 2.15
名称:0,数据类型:对象一列通常只有一种类型,请检查您的列A是否包含日期和编号,这些日期和编号超过两种类型,但实际的csv文件是这样的,并且有许多这样的csv文件。谢谢!我认为这是在下一个Panda版本解决这个缺陷并与Excel一样工作之前解决问题的唯一方法