2017-09-22 196 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。 –

相關問題