我有一个巨大的数据框,但只分享下面的示例。它是一个带有示例标题列名的CSV,如下所示
sample.csv
cnum,sup1,sup2,sup3,sup4
285414459,1,0,1,1
445633709,1,0,0,0
556714736,0,0,1,0
1089852074,0,1,0,1
cnum可以在所有sup*列中设置0或1。我想选择并打印该cnum遇到第一个1的列名。之后的所有其他1都应忽略,输出中不应打印列名
expected output:
cnum,supcol
285414459,sup1
445633709,sup1
556714736,sup3
1089852074,sup2
目前我尝试了以下代码:
import pandas as pd
df=pd.read_csv('sample.csv')
df_union=pd.DataFrame(columns=['cnum','supcol'])
for col in df.columns:
df1=df.filter(['cnum']).loc[df[col] == 1]
df1['supcol']=col
df_union=df_union.append(df1)
print(df_union)
但是,它正在打印所有列名,其中列名设置为1。我只想要第一个。 好心帮忙
似乎您可以在此处使用
idxmax
:另一个带有
dot
的选项(将提供所有非零列):或者
相关问题 更多 >
编程相关推荐