寻求使用架构 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]
最佳答案
首先,您可以使用 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]
关于python - 如何对 CSV 中的唯一 COL2 和 COL3 值中的唯一 COL1 值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42682144/