Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据库中返回列名的最有效方法_Python_Pandas - Fatal编程技术网

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