Преобразование строк данных, содержащих список, в значения NaN. - PullRequest
0 голосов
/ 10 июня 2018

Добрый день,

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

 A      B      C
John    45    [1,0] 
Carl    3     [1,2,1]
Fred    4     [-1]

Как видно выше в столбце 'C', несколько строк содержат списки.Моя цель - преобразовать их в значения NaN.Я хочу, чтобы результат выглядел следующим образом:

   A      B      C
John     45     NaN 
Carl     3      NaN
Fred     4      [-1]

Справка будет благодарна за то, как это сделать.Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 10 июня 2018

Вы также можете использовать:

df['C'][df['C'].apply(len)>1] = np.nan

Результат:

      A     B    C
0   John    45  NaN
1   Carl    3   NaN
2   Fred    4   [-1]
0 голосов
/ 10 июня 2018

Я бы использовал loc

df.loc[df.C.str.len() > 1, "C"] = np.nan
0 голосов
/ 10 июня 2018

Используйте mask с логической маской, созданной len:

df.C = df.C.mask(df.C.str.len() > 1)

Или:

df.C = np.where(df.C.str.len() > 1, np.nan, df.C)

print (df)
      A   B     C
0  John  45   NaN
1  Carl   3   NaN
2  Fred   4  [-1]

Если хотите преобразовать один список элементов в скаляры:

df.C = np.where(df.C.str.len() == 1,  df.C.str[0], np.nan)
print (df)
      A   B    C
0  John  45  NaN
1  Carl   3  NaN
2  Fred   4 -1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...