2016-11-02 87 views
1

在論壇中有一個非常類似的帖子 POST 但我只是無法弄清楚如何在我的例子中做到這一點。獲取列匹配某個值的行的索引

我與解釋現在的代碼如下

for i in dfuser.appid : 
    print i 
    d = dfbinary.loc[dfbinary['appid'] == i] 
    print d 
    glist = dfbinary.columns[dfbinary.loc[i]==1] 
    print glist 

我與他們的應用程序(dfuser)的用戶列表的數據幀和我有所有的應用程序的類型另一個數據框(一個應用程序可能有更多比一種流派)。所以我想看看哪個流派在每個用戶中更受歡迎。

我的代碼很好,但glist找不到我想要的appid,但找到了帶索引i的appid。例如,我= 10,所以它會發現在行11(10)的應用程序。

這是它打印

10 
    appid Accounting Action Adventure Animation&Modeling AudioProduction... 
0 10.0   0.0  1.0  0.0     0.0    0.0 
[1 rows x 23 columns] 
Index([u'Action'], dtype='object') 

(而這恰好是正確的)

+0

你能提供[MCVE]嗎? – IanS

+0

@ians嗯,我確實展示了代碼示例。至於結果的例子,我需要(每個用戶)'行動= 12,策略= 7,拼圖= 3' –

+0

@simon我不知道前面提到的工作,所以是的,但謝謝你的幫助 –

回答

1

首先,只要你有與熊貓你可能做錯了一個循環!

您需要使用合併來合併兩個數據框並僅選擇用戶和流派列。它像SQL一樣工作。然後你有一張用戶/流派的表格。現在你可以groupby(「user」)。count()。沒有明確的循環。

+0

當然,我想關於那個。問題是這兩個文件都很大,系統無法計算這麼大的文件,並說我合併了它們。想像一百萬行x 30列@simon –

+0

儘管你不需要30列。所以選擇你需要的東西然後合併。 – simon

+0

流派接近30,所以很遺憾我需要他們 –