[英]Pandas reshaping data from Multiple columns into a single Column
我有一个数据集,我想重整部分结果。 数据集总是从前几列开始,然后是可变数量的对数据进行分组的列。 如果密钥属于该组,则将用x标记。 每个密钥可能属于多个组。 也可以是空的。 数据结构如下:
Key Date Added Group1Name Group2Name Group3Name ... GroupXName
1 1/1/2018 x X
2 1/1/2018 x
3 1/1/2018
4 1/1/2018 x
5 1/1/2018 x
我想重新格式化为:
Key Date Added Group
1 1/1/2018 Group1Name,Group2Name
2 1/1/2018 Group2Name
3 1/1/2018
4 1/1/2018 Group1Name
5 1/1/2018 GroupXName
似乎您还没有尝试很多,并且很难用提供的内容来真正地复制数据,但是其想法是让列具有正确的值而不是'x'并将数据框从宽格式转换为长格式...
columns_to_consider = ['Group1Name', 'Group2Name', ... ]
for column in columns_to_consider:
df[column] = df[column].str.replace('X', column)
reshaped_df = pd.melt(df, id_vars=['Key', 'Date Added'], value_vars=columns_to_consider)
与axis=1
参数一起使用apply
:
def group_func(series):
values = []
for val, idx in zip(series, series.index.values):
if val is 'x':
values += [str(idx)]
return " ".join(values)
cols_to_agg = ['Group1Name', 'Group2Name', 'Group3Name', 'Group4Name']
df.loc[:,'Group'] = df.loc[:,cols_to_agg].apply(group_func, axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.