Python 如何在DataFrame中转换值为6200000到6.2M或1900到1.90K的列?
例如,对于此数据帧Python 如何在DataFrame中转换值为6200000到6.2M或1900到1.90K的列?,python,pandas,numpy,data-science,Python,Pandas,Numpy,Data Science,例如,对于此数据帧 df = pd.DataFrame({'Age':['12',np.nan,'32','21','55'], 'Height':["5'7","5'8","5'5",np.nan,"5'10"], 'Weight':[np.nan,'160','165','155','170'], 'Gender':['M','M',np.nan,'F',np.nan],
df = pd.DataFrame({'Age':['12',np.nan,'32','21','55'],
'Height':["5'7","5'8","5'5",np.nan,"5'10"],
'Weight':[np.nan,'160','165','155','170'],
'Gender':['M','M',np.nan,'F',np.nan],
'Salary':[2900,6550000,7840000,6550000,8950000]})
我希望输出为:
Age Height Weight Gender Salary
0 12 5'7 NaN M 2.9K
1 NaN 5'8 160 M 6.55M
2 32 5'5 165 NaN 7.84M
3 21 NaN 155 F 6.55M
4 55 5'10 170 NaN 8.95M
一种选择:
df=pd.DataFrame({'Age':['12',np.nan,'32','21','55'],
‘高度’:[“5'7”,“5'8”,“5'5”,北卡罗来纳州南部,“5'10”],
‘重量’:[np.nan,'160','165','155','170'],
性别:['M','M',np.nan,'F',np.nan],
“工资”:[29000650784000065500008950000]})
df['s']=df['Salary']。应用(λx:
str(x/1e6).format('{.2}')+'M'
如果x>=1e6
else str(x/1e3).format('{.2}')+'K'
如果x>1e3
else str(x).format('{:,}'))
给予
您可能需要编写自己的格式转换器,但我没有得到正确的逻辑。我想用python编写它。使用链接答案中的函数
Age Height Weight Gender Salary s
0 12 5'7 NaN M 29000 29.0K
1 NaN 5'8 160 M 650 650
2 32 5'5 165 NaN 7840000 7.84M
3 21 NaN 155 F 6550000 6.55M
4 55 5'10 170 NaN 8950000 8.95M