Python 在数据库中返回列名的最有效方法
我有一个Python 在数据库中返回列名的最有效方法,python,pandas,Python,Pandas,我有一个pandasdf,它包含4个不同的列。对于每个行都有一个重要的值。我想返回显示值的列名。因此,对于下面的df,我想在标记值2时返回列名称 d = ({ 'A' : [2,0,0,2], 'B' : [0,0,2,0], 'C' : [0,2,0,0], 'D' : [0,0,0,0], }) df = pd.DataFrame(data=d) 输出: A B C D 0 2 0 0 0 1
pandas
df
,它包含4个不同的列
。对于每个行
都有一个重要的值。我想返回显示值的列名
。因此,对于下面的df
,我想在标记值2时返回列
名称
d = ({
'A' : [2,0,0,2],
'B' : [0,0,2,0],
'C' : [0,2,0,0],
'D' : [0,0,0,0],
})
df = pd.DataFrame(data=d)
输出:
A B C D
0 2 0 0 0
1 0 0 2 0
2 0 2 0 0
3 2 0 0 0
所以它将是A,C,B,A
我是通过
m = (df == 2).idxmax(axis=1)[0]
然后更改行。但这不是很有效
我还希望从df
使用DataFrame.dot
生成一个系列的输出:
df.astype(bool).dot(df.columns).str.cat(sep=',')
或者
或者,作为列表:
df.astype(bool).dot(df.columns).tolist()
['A', 'C', 'B', 'A']
…或一系列:
df.astype(bool).dot(df.columns)
0 A
1 C
2 B
3 A
dtype: object
如果一列中有多个假值,它将合并该列,假设一列a在索引0和3处有两个假值,它将给出AD。有没有办法用a分隔这些列separator@MagentoLearner使用df.astype(bool).dot(df.columns+',').str.rstrip(',')
df.astype(bool).dot(df.columns).tolist()
['A', 'C', 'B', 'A']
df.astype(bool).dot(df.columns)
0 A
1 C
2 B
3 A
dtype: object