如果熊猫行中存在值,则获取熊猫行名

时间:2020-02-18 23:47:33

标签: pandas dataframe

我正在尝试将一个热键数据帧转换为2d帧

无论如何,我可以遍历行和列,并用列名填充具有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 个答案:

答案 0 :(得分:1)

您可以分隔每列包含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)