我在python中有一个数据框,我试图只从列中的有效值及其索引创建一个列表,例如。
index A B C D
Grade 50 50
Date 50
Time 50 50
Score 50
Height 50
我想要一个带有[column,index_name,value]的列表
[A,Date,50,Score,50]
[B,Height,50]
[C,Grade,50,Time,50]
到目前为止,我得到的是
for column in df:
df.loc[df[column] >= 50]
matched_list = (df.loc[df[column] >= 50])
full_list = [column] + list(matched_list.index.values) + [x for x in df[column] if x >= 50]
但是这给了我这个:
[A,Date,Score,50.50]
[B,Height,50]
[C,Grade,Time,50,50]
任何人都可以帮助并感谢你!
答案 0 :(得分:1)
你几乎拥有它。您只需要交错最后两个列表即可获得所需的输出。你可以用另外一个列表理解来完成这个:
for column in df:
df.loc[df[column] >= 50]
matched_list = (df.loc[df[column] >= 50])
indices = list(matched_list.index.values)
values = [x for x in df[column] if x >= 50]
full_list = [column] + [i for j in zip(indices, values) for i in j]
最后一行是您感兴趣的那一行。我刚刚将前两个列表分配给变量以保持行相对较短。