2017-08-09 206 views
-1

多行合併成一排,我有以下數據框:熊貓:基於索引

import pandas as pd 

df = pd.DataFrame({'Q10: HEDGE FUND':['NO', 'YES', 'NO'], 
        'Q10: PRIVATE EQUITY FUND': ['NO', 'YES', 'YES'], 
        'Q10: REAL ESTATE FUND': ['YES', 'NO', 'NO']}).T 

          0 1 2 
Q10: HEDGE FUND   NO YES NO 
Q10: PRIVATE EQUITY FUND NO YES YES 
Q10: REAL ESTATE FUND  YES NO NO 

我想要什麼:

    0 1     2 
Q10 REAL ESTATE FUND N/A PRIVATE EQUITY FUND 

也就是說,我想利用這三個Q10行並將它們合併爲1,列出基金的類型。

每列對應一種基金。第0列是房地產基金(請注意,Q10:房地產基金行有)。第2欄是私募股權基金(注意Q10:PRIVATE EQUITY行中有YES)。然而,列1的列表有兩個YESes,這是數據框中的錯誤。我需要將其更改爲N/A。

我試過了:對於每一列我都可以找到每列中'是'的位置,但是我不知道如何處理第1列(它有兩個,所以應該改爲N/A)我覺得有這樣做的更加無縫的方式:

df[0].tolist().index('YES') 
2 
+2

這我不清楚你的列意味着什麼你想要的輸出是 –

+0

我增加了一些更多的解釋,希望這有助於。每一列都是不同的「基金」,這些行告訴它是哪種類型的基金(除了第1列,這是數據框中的錯誤)。我想從3 YES/NO行更改爲1行,列出基金的類型 –

+0

因此,如果列中有多個YES,他們都需要更改爲NO基本上?然後看看哪些列是肯定的? –

回答

0
import pandas as pd 

df = pd.DataFrame({'Q10: HEDGE FUND':['NO', 'YES', 'NO'], 
       'Q10: PRIVATE EQUITY FUND': ['NO', 'YES', 'YES'], 
       'Q10: REAL ESTATE FUND': ['YES', 'NO', 'NO']}).T 

df2 = pd.DataFrame(index = ["Q10"], columns = [0,1,2]) 

df = df.transpose() 
Row = [] 
for col in df.columns: 
    if df[col].value_counts()["YES"]==1: 
     Row.append(col[5:]) 
    else: 
     Row.append("N/A") 

df2.loc["Q10"] = Row