2017-09-22 33 views
0

我在python中有一个数据框,我试图仅从列中的有效值及其索引(例如,如何在python中创建一个数据框的索引和值的列表

index A B C D 
Grade   50 50 
Date 50   
Time    50 50 
Score 50   
Height  50  

我想要的清单,是以[柱,INDEX_NAME,值]它看起来像这样

[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] 

Can anyo ne帮助,谢谢!

+0

想用熊猫吗? – BlooB

回答

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] 

最后一行是一个你有兴趣在我刚分配你的前两个名单变量保持线比较短。

+0

对于我在j代码最后一行代码中做什么? –

+0

在列表理解中的i,j只是对从两个列表创建的zip中的值进行交错而已。 –

+0

更具体地说,第一个j从zip对象中获取每个元组对,然后第二个对这个元组中的每个元素进行迭代:i。 –

相关问题