Как преобразовать столбец со значениями от 6200000 до 6,2 М или от 1900 до 1,90 КБ в DataFrame панд? - PullRequest
1 голос
/ 08 июля 2019

Например, для этого фрейма данных

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 

1 Ответ

3 голосов
/ 09 июля 2019

Один вариант:

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':[29000,650,7840000,6550000,8950000]})

df['s'] = df['Salary'].apply(lambda x: 
                             str(x/1e6).format('{:.2}')+'M' 
                                 if x >= 1e6 
                             else str(x/1e3).format('{:.2}')+'K'
                                 if x > 1e3
                             else str(x).format('{:,}'))

дает

   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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...