[英]Print column headers of datafreame in Python using Pandas
我有一个如下所示的输入数据框:
print (df)
Id A B C D
0 101 0 0 0 1
1 102 0 0 0 0
2 103 1 0 1 0
3 104 1 0 1 1
Output:我想打印其中包含“1”的列的列名。 output 数据帧应如下所示。 如果 1 不存在,它应该返回一个空字符串。
Id 101- D (4th index) has 1
Id 102- None
Id 104- A, C and D which are 1,3,4 indexes
因此,示例 output 如下所示:
print (df)
Id Result
0 101 D
1 102
2 103 A,C
3 104 A,C,D
我已经尝试过这段代码,但它没有用:
df['out'] = df.apply(
lambda x: ','.join(str(ele) for ele in [df.column for df.column,df.column.values in enumerate(x[:]) if df.column.values is 1]),
axis=1)
df_out
使用DataFrame.dot
与所有列没有第一个矩阵乘法,添加分隔符和最后通过索引删除最后一个字符(分隔符):
df['Result'] = df.iloc[:, 1:].dot(df.columns[1:] + ',').str[:-1]
print (df)
Id A B C D Result
0 101 0 0 0 1 D
1 102 0 0 0 0
2 103 1 0 1 0 A,C
3 104 1 0 1 1 A,C,D
您的解决方案应该使用带有join
的提取匹配索引进行更改:
df['Result'] = df.apply(lambda x: ','.join(x.index[1:][x.iloc[1:] == 1]), axis=1)
print (df)
Id A B C D Result
0 101 0 0 0 1 D
1 102 0 0 0 0
2 103 1 0 1 0 A,C
3 104 1 0 1 1 A,C,D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.