Как создать новый DataFrame pandas со столбцами в виде старых пар index_columnPython

Программы на Python
Ответить
Anonymous
 Как создать новый DataFrame pandas со столбцами в виде старых пар index_column

Сообщение Anonymous »

У меня есть два DataFrame панд:

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

object_1df = pd.DataFrame(
[['a', 1], ['b', 2]],
columns=['letter', 'number'])
object_2df = pd.DataFrame(
[['b', 3, 'cat'], ['c', 4, 'dog']],
columns=['letter', 'number', 'animal'])

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

  letter  number
0      a       1
1      b       2

letter  number animal
0      b       3    cat
1      c       4    dog
Мне нужно сделать каталог из одной строки для каждого DataFrame и столбцов, равных количеству элементов. Окончательная форма должна представлять собой одну строку для каждого df со столбцами:

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

a_letter  a_number b_letter  b_number b_animal c_letter  c_number c_animal
Я предпринял очень неприятную попытку:

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

objects = [object_1df, object_2df]

catalog = pd.DataFrame()
for objectdf in objects:
object_row = pd.DataFrame()
for letter in objectdf['letter']:
for column in objectdf.columns:
object_row[f'{letter}_{column}'] = objectdf[column].loc[
objectdf['letter'] == letter]
catalog = pd.concat([catalog, object_row], ignore_index=True)
display(catalog)
который выводит нежелательный результат:

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

  a_letter  a_number b_letter  b_number b_animal c_letter  c_number c_animal
0        a       1.0      NaN       NaN      NaN      NaN       NaN      NaN
1      NaN       NaN        b       3.0      cat      NaN       NaN      NaN
Этот результат по существу считает только первую строку из каждого df и дает NaN во всех остальных местах. Как это было бы правильно сделать?

Подробнее здесь: https://stackoverflow.com/questions/791 ... lumn-pairs
Ответить

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

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

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

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

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