无法从熊猫数据框中删除空格

时间:2020-10-09 15:58:42

标签: python pandas

具有此数据:

                              region gdp_per_capita
0                      Coasts of USA         71 546
1          USA: New York, New Jersey         81 615
2                    USA: California         74 205
3                   USA: New England         74 000

想要得到这个:

                              region gdp_per_capita
0                      Coasts of USA          71546
1          USA: New York, New Jersey          81615
2                    USA: California          74205
3                   USA: New England          74000

试图使用df.columns = df.columns.str.replace(' ', ''),但是没有用

4 个答案:

答案 0 :(得分:1)

这应该做:

df['gdp_per_capita'] = df['gdp_per_capita'].astype(str).str.replace('\s+', '').replace('nan', np.nan)
df['gdp_per_capita'] = pd.to_numeric(df['gdp_per_capita'])
print(df)

                      region gdp_per_capita
0              Coasts of USA          71546
1  USA: New York, New Jersey          81615
2            USA: California          74205
3           USA: New England          74000

答案 1 :(得分:1)

看起来您想使用数字而不是字符串。

因此,用' '代替''并使用pd.to_numeric似乎是一种简单而可靠的方法。

让我提出另一个可能好坏的建议(取决于您的数据集)。

如果数据集中的数千个字符之间用空格(' '隔开,则您可以将df读为

df = pd.read_csv(file, thousands = ' ')

,所有带有74 109的列都将被读取为74109dtype的整数或浮点数。

答案 2 :(得分:1)

import re
df['gdp_per_capita'] = df['gdp_per_capita'].apply(lambda x: re.sub("[^0-9]", "", str(x))).astype(int)

答案 3 :(得分:0)

我不太确定它是否可以工作,但是请尝试以下操作:

  1. 熊猫列的修剪前导空间– lstrip()
  2. 熊猫列的修剪尾随空间– rstrip()
  3. 修剪Tanda中列的前导和尾随空间– strip()
  4. 将熊猫中列的所有空白都剥离。

让我知道它是否有效:)