如何使用 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 在双引号之间读取带有千位分隔符的数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在双引号字符串中使用对象的属性?

如何使用jQuery在双引号内定位这个破折号html元素?

如何在双引号中打印字符串? (不打印双引号)

当字符串在双引号内有单引号时,如何在Javascript中将此字符串转换为JSON对象

如何使用 pandas.read_csv() 将索引数据读取为字符串?

如何使用 pandas.read_csv 将 CSV 文件中的数据插入数据框?