python - 如何对 CSV 中的唯一 COL2 和 COL3 值中的唯一 COL1 值进行分组

标签 python csv pandas hive python-itertools

寻求使用架构 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]

最佳答案

首先,您可以使用 meltCOL2COL3 垂直堆叠为长格式。其次,您现在可以使用 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/

相关文章:

python - 使用scipy计算没有函数的时间序列数据的积分

ruby-on-rails - rails 4.2 : Rake Task to Import CSV Issue

python - Pandas- 通过在 | 上拆分单元格来创建新列n次

python - 如何从 Pandas 中的另一列中减去字符串类型列的值

python - Keras 分类器上的 Sklearn 精度、召回率和 FMeasure 指标

python - 数据读取-csv

python - OSV 方法的返回语句

python - 如何从python中的fft信号中找到感兴趣频率的bin号?

python - CSV 输出顺序错误

python - 如何计算每个特定 id 组的列的项目直方图?