首页 > 解决方案 > 更改数据框中列的元素并合并列

问题描述

我有一个数据框 df 创建为,

df = pd.DataFrame([
     [0, 1, 0],
     [1, 0, 0],
     [0, 1, 0]],
     columns=['Mon','Tue','Wed'])

df:
    Mon Tue Wed
0   0   1   0
1   1   0   0
2   0   1   0

对于这个数据框,我想将元素“1”替换为相应的列名,将“0”替换为“”,最后将它们全部组合起来。

1 和 0 也可以是字符 - 'X' 和 '-'。

Desired Output:
    Day
0   Tue
1   Mon
2   Tue

标签: pythonpandasdataframenumpymerge

解决方案


如果可能每行重复,请使用DataFrame.dot以逗号分隔的列名称:1

df1 = df.dot(df.columns + ',').str[:-1].to_frame('Day')
print (df1)
   Day
0  Tue
1  Mon
2  Tue

如果有多个值:

df = pd.DataFrame([
     [0, 1, 1],
     [1, 0, 0],
     [0, 1, 0]],
     columns=['Mon','Tue','Wed'])


print (df)
   Mon  Tue  Wed
0    0    1    1
1    1    0    0
2    0    1    0


df1 = df.dot(df.columns + ',').str[:-1].to_frame('Day')
print (df1)
       Day
0  Tue,Wed
1      Mon
2      Tue

推荐阅读