如何使用 pandas.read_csv 在双引号之间读取带有千位分隔符的数字 [重复]
Posted
技术标签:
【中文标题】如何使用 pandas.read_csv 在双引号之间读取带有千位分隔符的数字 [重复]【英文标题】:How to read numbers with thousands separator between double quote using pandas.read_csv [duplicate] 【发布时间】:2021-02-18 04:52:40 【问题描述】:我有一个这样的 csv 文件 (data.csv):
A,B,C,D,E
1.50,2.70,"2,481","1,569",2.15
29.10,31.00,4,10,37.00
John, Jeff, Ruben, Catherine, James
我尝试使用 df=pd.read_csv("data.csv")
我得到了 df=
A B C D E
0 1.5 2.7 2,481 1,569 2.15
1 29.1 31.0 4 10 37.00
2 John Jeff Ruben Catherine James
看起来不错,但实际上 df.iloc[0,2]='2,481'
,df.iloc[0,3]='1,569'
,即它们是字符串而不是整数或浮点数。
当我尝试df=pd.read_csv("data.csv",quotechar='"')
时,一切都是字符串。我无法将它们全部转换为浮点数或整数,因为还有其他元素(示例中未显示)作为正确读取的日期时间。
我还尝试了以千=',' 作为 read_csv 中的参数,但它仅适用于我的数据文件中没有最后一行的情况。字符串行似乎使数千=','无效。 在我的实际文件中,有很多数字行和很多字符串(名称)行。
如何处理双引号和 csv 文件中字符串行之间的千位分隔符?
【问题讨论】:
【参考方案1】:有一个thousands
参数。见read_csv:
import pandas as pd
df = pd.read_csv('data.csv',thousands=',')
print(df)
print()
print(df.dtypes)
A B C D E
0 1.5 2.7 2481 1569 2.15
1 29.1 31.0 4 10 37.00
A float64
B float64
C int64
D int64
E float64
dtype: object
【讨论】:
非常感谢!它适用于简单的数据文件,但不适用于我的实际数据文件,例如第 4 行:John、Jeff、Ruben、Catherine、James以上是关于如何使用 pandas.read_csv 在双引号之间读取带有千位分隔符的数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当字符串在双引号内有单引号时,如何在Javascript中将此字符串转换为JSON对象