#python #pandas #dataframe #matrix
#python #pandas #фрейм данных #матрица
Вопрос:
У меня есть данные, которые выглядят так, что я импортировал с помощью pandas в python:
new_id code
001722 A01.09
001723 A01.09
001723 A02.0
001724 A02.9
001724 A03.9
001725 A03.9
И я хотел бы преобразовать это в матрицу из 1 и 0 для присутствия / отсутствия, предполагая также использование pandas, чтобы выглядеть так:
new_id A01.09 A02.0 A02.9 A03.9
001722 1 0 0 0
001723 1 1 0 0
001724 0 0 1 1
001725 0 0 0 1
Я должен сделать это для разных типов данных. «код» здесь — это только один тип данных, который мне нужно преобразовать. Итак, как только у меня будут эти матрицы, я также хотел бы объединить их в одну большую матрицу, используя «new_id» в качестве объединяющего столбца, добавив новые данные справа от матрицы.
Я сделал это на R, однако мне нужно сделать это на python по ряду причин, и я новичок в этом языке.
Ответ №1:
Возможно, вы захотите использовать сводную таблицу:
df['COUNT'] = 1
print(df.pivot_table('COUNT', index='new_id', columns="code").fillna(0))
(хотя, если вы хотите придерживаться целых чисел, вам придется добавить ‘.astype (int)’ к последней строке: перед заполнением данных 0 вы получите значения «1» и «NaN», которые преобразуются в float64 из-за «NaN»)
Комментарии:
1. Итак, если я хочу сохранить файл, я бы сделал: df[‘COUNT’] = 1 new_file = df.pivot_table(‘COUNT’, index=’new_id’, columns=»code»). fillna(0).astype(int) ?
2. Да, это сработало! Большое спасибо! Как бы мне теперь объединить похожие матрицы, используя «new_id» в качестве объединяющего столбца?
3. Используйте pandas merge (если вы «объединяете» столбцы, которые не являются индексами) или join (для работы непосредственно с индексами, как вы могли бы в этом случае).
4. Большое спасибо за помощь. Это на удивление проще, чем было в R!