初学Pandas,但我认为这是合适的工具。
我有一个CSV文件,看起来像这样,显示源/目标/值之间的关系:
来源 | 目的 | 值 | Item1 | Item1 | 对 |
---|---|---|
Item1 | 第二条 | 对 |
第二条 | Item1 | 假 |
第二条 | 第二条 | 对 |
可供您选择的选项很少。您可以使用pivot
(评论中已经有示例)或pivot_table
。它们的不同之处在于pivot_table
可以处理枢轴列的重复值,所以如果您确实有再次显示相同关系的行,请使用它。
代码可以像这样:
df = pd.read_csv('Input.csv')
res = df.pivot_table(values='Value', index='Source', columns='Destination',aggfunc=max)
# without aggfunc, you get 0 and 1 as result, you can also go with "any" for example.
# if duplicate rows with different value in "Value" then you can decide about how these values gets aggregated.
res.to_csv('Output.csv')
其他可能是pd.crosstab
(您也必须在这里选择aggfunc)或
我想熊猫的" pivot "会对你有帮助。
df = pd.read_csv("./source-def.csv", sep="t")
df_op = df.pivot(index='Source', columns='Destination', values='Value').fillna(False)
df_op.head()
<表类>目的地 Item1 第二条 Item3 Item4 tbody><<tr>源 Item1 对 对 假 假 第二条 假 对 对 对 表类>