我有一个pandas df包含4个不同的columns。对于每一个row孤单一个value重要性的多数民众赞成。我想回到的Column name地方是value显示。因此,对于df以下内容,我想在Column标记值为2时返回名称。
pandas
df
columns
row
value
Column name
Column
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
A,C,B,A
我通过这样做
m = (df == 2).idxmax(axis=1)[0]
然后更改行。但这不是很有效。
我也希望将输出Series从pandas df
Series
pandas df
用途DataFrame.dot:
DataFrame.dot
df.astype(bool).dot(df.columns).str.cat(sep=',')
要么,
','.join(df.astype(bool).dot(df.columns)) 'A,C,B,A'
或者,作为列表:
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