Получить pandas имена строк, если присутствует значение в pandas строке - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь преобразовать один фрейм данных горячих клавиш в 2-мерный фрейм.

В любом случае я могу перебирать строки и столбцы и заполнять значения, имеющие 1, именем столбца.

кадр данных проблемы:

+------------------+-----+-----+
| sentence         | lor | sor |
+------------------+-----+-----+
| sam lived here   | 0   | 1   |
+------------------+-----+-----+
| drack lived here | 1   | 0   |
+------------------+-----+-----+

кадр данных решения:

+------------------+------+
| sentence         | tags |
+------------------+------+
| sam lived here   | sor  |
+------------------+------+
| drack lived here | lor  |
+------------------+------+

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете отделить строки, имеющие 1 для каждого столбца. Для этих столбцов замените значение 1 именем, указанным вместе с переименованием имен столбцов

lor_df = df.loc[df["lor"].eq(1), "lor"].rename(columns={"lor": "tags"}).replace(1, "lor")
sor_df = df.loc[df["sor"].eq(1), "sor"].rename(columns={"sor": "tags"}).replace(1, "sor")

. После этого объедините отдельные результаты, используя pandas .concat с последующим удалением столбцы, которые не требуются.

df["tags"] = pd.concat([lor_df, sor_df], sort=False)
df.drop(columns=["lor", "sor"], inplace=True)

Для обеспечения уникальных значений мы можем использовать pandas .DataFrame.drop_duplicates

df.drop_duplicates(inplace=True)
print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...