Значение столбца заменить - PullRequest
0 голосов
/ 20 октября 2018

У меня есть pandas dataframe, чье col_3 равно df['col_1].map(str) +','+df['col_2].map(str)

col_1         col_2       col_3
abccd                    ['abccd','nan']
mmdf          Hgfg       ['mmdf','Hgfg']
abccd         ddsx       ['abccd','ddsx']
hhdy                     ['hhdy','nan']

Очевидно, что 'nan' создается, так как Col_2 пуст.Мой вопрос: как я могу заменить 'nan' значениями Col_1, т.е. когда значение Col_2 пусто, Col_3 будет df['col_1].map(str) +','+df['col_1].map(str) Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Подходящее решение будет зависеть от того, хотите ли вы ряд строк или ряд списков.Вы можете использовать fillna для первого и ffill для второго случая:

df = pd.DataFrame({'col_1': ['abccd', 'mmdf', 'abccd', 'hhdy'],
                   'col_2': [np.nan, 'Hgfg', 'ddsx', np.nan]})

df['col_3'] = df['col_1'].map(str) + ',' + df['col_2'].fillna(df['col_1']).map(str)
df['col_4'] = df[['col_1', 'col_2']].ffill(1).values.tolist()

print(df)

   col_1 col_2        col_3           col_4
0  abccd   NaN  abccd,abccd  [abccd, abccd]
1   mmdf  Hgfg    mmdf,Hgfg    [mmdf, Hgfg]
2  abccd  ddsx   abccd,ddsx   [abccd, ddsx]
3   hhdy   NaN    hhdy,hhdy    [hhdy, hhdy]

Применяются обычные заявления об отказе от ответственности: вам следует избегать списков вpd.Series объектов, так как теперь у вас есть 2 слоя указателей в серии object dtype.

0 голосов
/ 20 октября 2018

использовать df.replace()

 df['col_3'] = df['col_1'].map(str) +','+df['col_2'].replace(np.nan, df['col_1']).map(str)

в зависимости от вашего вывода, похоже, что ваши значения в df ['col_2'] равны np.nan, если их нет, вам может потребоваться заменить пустую строку ине np.nan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...