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