具有此数据:
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(' ', '')
,但是没有用
答案 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
的列都将被读取为74109
和dtype
的整数或浮点数。
答案 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)
我不太确定它是否可以工作,但是请尝试以下操作:
让我知道它是否有效:)