Pandas обновляет несколько столбцов одновременноPython

Программы на Python
Ответить
Anonymous
 Pandas обновляет несколько столбцов одновременно

Сообщение Anonymous »

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

Код: Выделить всё

df = pd.DataFrame([['A','B','C',np.nan,np.nan,np.nan],
['D','E','F',np.nan,np.nan,np.nan],[np.nan,np.nan,np.nan,'a','b','d'],
[np.nan,np.nan,np.nan,'d','e','f']], columns = ['Col1','Col2','Col3','col1_v2','col2_v2','col3_v2'])

print df

Col1 Col2 Col3 col1_v2 col2_v2 col3_v2
0    A    B    C     NaN     NaN     NaN
1    D    E    F     NaN     NaN     NaN
2  NaN  NaN  NaN       a       b       d
3  NaN  NaN  NaN       d       e       f

#update
df.loc[df['Col1'].isnull(),['Col1','Col2', 'Col3']] = df[['col1_v2','col2_v2','col3_v2']]

print df

Col1 Col2 Col3 col1_v2 col2_v2 col3_v2
0    A    B    C     NaN     NaN     NaN
1    D    E    F     NaN     NaN     NaN
2  NaN  NaN  NaN       a       b       d
3  NaN  NaN  NaN       d       e       f
Мой желаемый результат:

Код: Выделить всё

 Col1 Col2 Col3 col1_v2 col2_v2 col3_v2
0    A    B    C     NaN     NaN     NaN
1    D    E    F     NaN     NaN     NaN
2    a    b    c       a       b       d
3    d    e    f       d       e       f
Держу пари, что это связано с обновлением/настройкой фрагмента, но я всегда использую .loc для обновления значений, а не для нескольких столбцов одновременно.< /p>

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

Изменить, чтобы отразить решение ниже
Спасибо. за комментарий по индексам. Однако у меня есть вопрос по этому поводу, поскольку он относится к сериалам. Если бы я хотел обновить отдельную серию аналогичным образом, я мог бы сделать что-то вроде этого:

Код: Выделить всё

df.loc[df['Col1'].isnull(),['Col1']] = df['col1_v2']

print df

Col1 Col2 Col3 col1_v2 col2_v2 col3_v2
0    A    B    C     NaN     NaN     NaN
1    D    E    F     NaN     NaN     NaN
2    a  NaN  NaN       a       b       d
3    d  NaN  NaN       d       e       f
Обратите внимание, что я не учел здесь индексы, я отфильтровал серию 2x1 и установил ее равной серии 4x1, но он обработал ее правильно. Мысли? Я пытаюсь лучше понять функциональность того, чем пользовался какое-то время, но, похоже, не совсем понимаю основной механизм/правило

Подробнее здесь: https://stackoverflow.com/questions/374 ... ns-at-once
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»