2017-10-10 201 views
3

我有一個包含長數字的列的數據框。我試圖將數字列中的所有值轉換爲逗號分隔數千。Python/Pandas:用逗號分隔數以千計的數字

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 

回答

3

您可以使用字符串格式化,

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 
+2

我投這個!地圖imo比一般應用快得多。 –

+0

我試過了: 'df ['col_2'] = df ['col_2']。astype(int).map('{:,。2f}'。format) 出現錯誤:ValueError:invalid literal長()以10爲底:'34,590,927'' –

+0

df.dtypes的輸出是什麼? – Vaishali

2

申請格式功能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 
+0

我得到了以下錯誤: ValueErrorTraceback(最新最後調用) ----> 1 DF = df.assign(COL_2 = df.col_2.apply( '{:,}' 格式) ) 2 DF 在/usr/lib64/python2.7/site-packages/pandas/core/series.pyc申請(個體,FUNC,convert_dtype,指定參數時,** kwds) 2218否則: 2219值=自.asobject - > 2220 mapped = lib.map_infer 2222 if len(mapped)and isinstance pandas.lib.map_infer中的rence.pyx(pandas/lib.c:62658)() ValueError:無法用's'指定','。 –

+0

@羅馬你沒有發佈完整的跟蹤 – galaxyan

+0

@羅馬col_2的類型是什麼?您可能需要將col_2轉換爲int – galaxyan