Pandas DataFrames: извлечение информации и свертывание столбцов - PullRequest
0 голосов
/ 27 февраля 2019

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

Лучше всего объяснить визуально:

df = pd.DataFrame({'Number Type 1':[1,2,np.nan],
                   'Number Type 2':[np.nan,3,4],
                   'Info':list('abc')})

Initial DataFrame

В таблице показан исходный кадр данных со столбцами Number Type 1 и NumberType 2.Я хотел бы извлечь типы и создать новый столбец Type с соответствующим изменением структуры фрейма данных.

Refactored DataFrame

в основном, числа свернуты в *Столбцы 1021 * и типы, извлеченные в столбец Type.Информация в столбце Info связана с числами (например, 2 и 3 имеют одинаковую информацию b)

Каков наилучший способ сделать это в Pandas?

1 Ответ

0 голосов
/ 27 февраля 2019

Использование melt с dropna:

df = df.melt('Info', value_name='Number', var_name='Type').dropna(subset=['Number'])
df['Type'] = df['Type'].str.extract('(\d+)')
df['Number'] = df['Number'].astype(int)
print (df)
  Info Type  Number
0    a    1       1
1    b    1       2
4    b    2       3
5    c    2       4

Другое решение с set_index и stack:

df = df.set_index('Info').stack().rename_axis(('Info','Type')).reset_index(name='Number')

df['Type'] = df['Type'].str.extract('(\d+)')
df['Number'] = df['Number'].astype(int)
print (df)
  Info Type  Number
0    a    1       1
1    b    1       2
2    b    2       3
3    c    2       4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...