我正在尝试将一个热键数据帧转换为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 |
+------------------+------+
答案 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)