我有一个数据集,我想重整部分结果。数据集总是从前几列开始,然后是可变数量的对数据进行分组的列。如果密钥属于该组,则将用x标记。每个密钥不会属于多个组。数据结构如下:
Key Date Added Group1Name Group2Name Group3Name ... GroupXName
1 1/1/2018 x
2 1/1/2018 x
3 1/1/2018 x
4 1/1/2018 x
5 1/1/2018 x
我想重新格式化为:
Key Date Added Group
1 1/1/2018 Group1Name
2 1/1/2018 Group2Name
3 1/1/2018 Group3Name
4 1/1/2018 Group1Name
5 1/1/2018 GroupXName
答案 0 :(得分:3)
我们首先可以将其转换为易于使用的二进制格式:
group_cols = df.columns.difference(["Key", "Date Added"])
df[group_cols] = df[group_cols].replace({"":0, "x":1})
然后在轴1上获得最大id,即我们具有最高值的列,该值为1
df["Group"] = df[group_cols].idxmax(axis=1)
和删除原始列
df = df.drop(group_cols, axis=1)