繁体   English   中英

使用 Pandas 打印 Python 中数据帧的列标题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM