将以逗号分隔的字符串的pandas列转换为整数

时间:2018-12-21 14:38:54

标签: python python-3.x pandas

我有一个数据框,其中包含一列用逗号分隔的值。我想将该列中的字符串值转换为整数。

我一般都对编码不熟悉,因此将不胜感激地简要说明正在发生的事情。如果有时间。

我尝试了以下代码。

{{1}}

4 个答案:

答案 0 :(得分:6)

我认为您的解决方案实际上应该是:

df['col3'] = df.col3.str.split(',').str.join('').astype(int)

    col1 col2   col3
0     1    x  12123
1     2    x   1123
2     3    y  45998

由于str.strip仅从左侧和右侧剥离。

说明

  • str:允许Series的向量化字符串函数
  • split:将根据某种模式拆分列表中的每个元素,在这种情况下,,
  • join:将要传递的分隔符(现在要创建''的情况下,将现在的一系列列表中的元素与传递的分隔符ints连接起来。

最后.astype(int)将每个字符串转换为整数

答案 1 :(得分:4)

该问题已经有了答案,但是,我想添加另一个解决方案:

DataFrame:

>>> df
   col1 col2    col3
0     1    x  12,123
1     2    x   1,123
2     3    y  45,998

使用str.replace方法尝试最简单的方法,您已经完成:

>>> df['col3'] = df['col3'].str.replace(",", "")
# df['col3'] = df['col3'].str.replace(",", "").astype(int) <- cast to int
>>> df
   col1 col2   col3
0     1    x  12123
1     2    x   1123
2     3    y  45998

OR

另一种将df.replace与regex方法一起使用作为正则表达式替换的方法是在re.sub的幕后进行。 re.sub的替换规则是相同的。

>>> df['col3'] = df['col3'].replace(',', '', regex=True)
>>> df
   col1 col2   col3
0     1    x  12123
1     2    x   1123
2     3    y  45998

答案 2 :(得分:2)

简要说明:

df['col3'].str.strip(',').str.join('').astype(int)
  • df['col3']根据pandas.Series的值生成col3
  • _______.str可以理解为强制转换为字符串,通常意味着您希望对系列内容使用字符串方法
  • _____.str.strip(',')使用strip方法:使用提供的分隔符作为用于区分一个子字符串何时结束和下一个子字符串何时开始的参数,将字符串分成子字符串
  • _____.str.strip(',').str.join('')提取拆分生成的子字符串并将它们串联在一起(实际上,您只是在删除分隔符)
  • ____.astype(int)将结果转换为整数

请在加入join时加入尼克松,以生成实际所需的输出。希望这对您有所帮助,编码愉快!

答案 3 :(得分:0)

所有的答案都是在从 csv 或 excel 等源读取数据后解决它的。查看问题的另一种方法是在从源读取期间对数据进行规范化。以下是使用 read_csv 或 read_excel 时的操作方法

pd.read_csv('your_file_name', thousands=',')
pd.read_excel('your/file/name', thousands=',')

参见熊猫文档 read_excelread_csv