Pandas: Как заменить подмножество значений столбцов теми же значениями столбцов в определенной серии?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas: Как заменить подмножество значений столбцов теми же значениями столбцов в определенной серии?

Сообщение Anonymous »

Я пишу скрипт Pandas для манипулирования данными в файле Excel. Сначала я загружаю два листа в фреймы данных. Один — это исходные данные df, второй — лист с подробным описанием замен, которые необходимо выполнить при замене исходных данных.
Скрипту необходимо выполнить два действия. вещи для каждой строки df.
  • Замените каждый экземпляр 'Name' в df на 'NameReplace' (работает)
  • Для тех же строк в df замените фрагмент столбцов ( указанный списком) со значениями в том же фрагменте столбцов в replace
Воспроизводимый минимальный пример моей текущей реализации:

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

import pandas

df = pandas.DataFrame([["John", None, None],["Phil", None, None],["John", None, None],["Bob", None, None]], columns=["Name", "Age", "Height"])
replace = pandas.DataFrame([["John", "Dom", 25, 175],["Phil", "Kevin", 56, 145],["Bob", "Michael", 33, 180]], columns=["Name", "NameReplace", "Age", "Height"])

detailsList = ["Age", "Height"]

for i, row in replace.iterrows():
df.loc[df['Name'] == row['Name'], 'Name'] = row['NameReplace']
df.loc[df['Name'] == row['NameReplace'], detailsList] = row[detailsList]

print(df)
Шаг 1) работает с этой реализацией, но столбцы DetailList в df не заполняются.

Текущий результат это

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

      Name  Age Height
0      Dom  NaN    NaN
1    Kevin  NaN    NaN
2      Dom  NaN    NaN
3  Michael  NaN    NaN
Желаемый результат:

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

      Name  Age Height
0      Dom  25    175
1    Kevin  56    145
2      Dom  25    175
3  Michael  33    180
Я уже некоторое время пытаюсь, но не могу добиться прогресса. Я также не совсем понимаю, почему это не работает, поэтому буду благодарен за любую информацию!
Примечание. Использование DetailList для необходимо указать фрагмент столбцов, так как в реальном решении я работаю только с определенным фрагментом полного кадра данных, в отличие от приведенного мной примера.

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-values-i
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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