Панда условное добавление столбца - PullRequest
0 голосов
/ 17 мая 2018

У меня есть такой фрейм данных:

>>df 
L1      L0        desc_L0 
4956    10         Hi
1509    nan        I  am 
1510    20         Here 
1511    nan        where r u ?

Я хочу вставить новый столбец desc_L1, когда значение для L0 равно нулю, и в то же время переместить соответствующее значение desc_L0 в desc_L1.

Желаемый вывод:

L1      L0       desc_L0      desc_L1
4956    10       Hi           nan
1509    nan      nan          I  am 
1510    20      Here          nan
1511    nan      nan          where r u ?

Как это можно сделать питонским способом?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете попробовать так:

df['desc_L1'] = df['desc_L0']
df['desc_L1'] = np.where(df['L0'].isna(), df['desc_L0'], np.NaN)
df['desc_L0'] = np.where(df['L0'].isna(), np.NaN, df['desc_L0'])

Ввод:

     L0       desc_L0
0  10.0            hi
1   NaN          I am
2  20.0          Here
3   NaN  where are u?

Выход:

     L0 desc_L0       desc_L1
0  10.0      hi           NaN
1   NaN     NaN          I am
2  20.0    Here           NaN
3   NaN     NaN  where are u?
0 голосов
/ 17 мая 2018

Первая копия вашей серии:

df['desc_L1'] = df['desc_L0']

Затем используйте маску для обновления двух серий:

mask = df['L1'].isnull()
df.loc[~mask, 'desc_L1'] = np.nan
df.loc[mask, 'desc_L0'] = np.nan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...