我有一个数据框,其中一列包含长数字。我尝试将数字列中的所有值转换为千位分隔符。
df
col_1 col_2
Rooney 34590927
Ronaldo 5467382
John 25647398
我该如何迭代并得到以下结果?
预期结果:
col_1 col_2
Rooney 34,590,927
Ronaldo 5,467,382
John 25,647,398
你可以使用字符串格式化,
df['col_2'] = pd.to_numeric(df['col_2'].fillna(0), errors='coerce')
df['col_2'] = df['col_2'].map('{:,.2f}'.format)
请记住col_2现在将是字符串而不是整数。
col_1 col_2
0 Rooney 34,590,927.00
1 Ronaldo 5,467,382.00
2 John 25,647,398.00
将格式函数应用于col_2
df = df.assign(col_2=df.col_2.astype(int).apply('{:,}'.format))
col_1 col_2
0 Rooney 34,590,927
1 Ronaldo 5,467,382
2 John 25,647,398
df = df.assign(col_2=df.col_2.astype(int).apply('{:,}'.format))
。 - Preetesh Gaitonded = len(list(df.columns))
例如 d=22
d = d-2
,我们只想转换20列
for x in df.columns[-d:]:
df[x] = [(locale.format("%d", a, grouping=True)) for a in df[x]]
这将解决问题并动态地使其逗号分隔。
df['col_2'] = df['col_2'].astype(int).map('{:,.2f}'.format)
但是出现了错误:ValueError: invalid literal for long() with base 10: '34,590,927'
- Preetesh Gaitondecol2 float64
dtype: object
- Preetesh GaitondeValueError: 无法将NA转换为整数
。 - Preetesh Gaitonde