Сместить значения в записи по столбцу. - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть фрейм данных, где одно из наблюдений не соответствует столбцам.Примерно так:

  Names    Age   Dept
0  John     21  sales
1   Joe     22     IT
2   Ann     20     IT
3    24  sales    NaN

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

   Names  Age   Dept
0  John   21  sales
1   Joe   22     IT
2   Ann   20     IT
3   NaN   24  sales

Я искалмного, но не нашел способа сделать это.Я чувствую, что должен быть встроенный метод, чтобы сделать это простым способом.

Я новичок в программировании, извините, если это основной вопрос.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Или используйте структуру df[...]=df[...]:

df[df['Dept'].isnull()]=df[df['Dept'].isnull()].shift(axis=1)

А теперь:

print(df)

Is:

  Names Age   Dept
0  John  21  sales
1   Joe  22     IT
2   Ann  20     IT
3   NaN  24  sales

shift(axis=1) смещает строку настрока, и если вы удалите axis=1 part, shift() будет смещен столбец за столбцом.

0 голосов
/ 08 декабря 2018

Создать логическую маску с помощью to_numeric с помощью notna или функции isnumeric для поиска проблемных строк, а затем shift только отфильтрованные строки:

m = pd.to_numeric(df['Names'], errors='coerce').notna()
#alternative
#m = df['Names'].str.isnumeric()

df[m] = df[m].shift(axis=1)
print (df)
  Names Age   Dept
0  John  21  sales
1   Joe  22     IT
2   Ann  20     IT
3   NaN  24  sales
...