寻求转换具有架构COL1 = INT,COL2 = STR,COL3 = STR的CSV表:
输入样本
INT1, S1, S2
INT1, S1, S3
INT1, S2, S3
INT2, S1, S2
INT2, S1, S3
INT2, S1, S4
INT2, S2, S3
INT2, S2, S4
INT2, S3, S4
到输出CSV /表格,其中COL2或COL3中的唯一字符串作为COL1输出,后面是它们出现的唯一COL1 INT的列表(在输出表/ CSV的COL2中)。
输出CSV /表格:
S1, [INT1, INT2]
S2, [INT1, INT2]
S3, [INT1, INT2]
S4, [INT2]
答案 0 :(得分:3)
首先,您可以使用melt将COL2
和COL3
垂直堆叠为长格式。其次,您现在可以使用groupby按熔化列进行分组,并为每个子组(S1,S2等等)获取COL1
的唯一值:
# create example df
df = pd.DataFrame([["INT1", "S1", "S5"],
["INT1", "S2", "S3"],
["INT2", "S1", "S2"],
["INT2", "S1", "S3"]],
columns=["COL1", "COL2", "COL3"])
print(df)
COL1 COL2 COL3
0 INT1 S1 S5
1 INT1 S2 S3
2 INT2 S1 S2
3 INT2 S1 S3
result = pd.melt(df, id_vars="COL1").groupby("value")["COL1"].unique()
print(result)
S1 [INT1, INT2]
S2 [INT1, INT2]
S3 [INT1, INT2]
S5 [INT1]
答案 1 :(得分:1)
如果COL2
和COL3
相同,您可以将两列堆叠为长格式,按值分组,并找出INT
列的唯一元素{{1功能:
set