簡體   English   中英

按熊貓數據框的索引對所有列的值進行分組

[英]Grouping the values of all columns by index of a pandas dataframe

我想基本建立總分配。 用戶觀看的視頻數量。 監視用1否則0表示。用戶是數據幀的索引。

假設數據是這樣的:

A   B   C
User1   1   1   0
User2   0   1   0
User3   1   0   1

我希望每次使用該行中所有1的計數。

我正在做這樣的事情,但似乎沒有用。 我不想使用某些applymap函數,因為這似乎很慢。

d.groupby(d.index).sum(axis=1)

給出軸無法識別的錯誤

如果索引中有重復項,則可以將groupby與double sum一起使用:

print (df)
       A  B  C
User1  1  1  0
User1  1  1  1
User2  0  1  0
User3  1  0  1

print (df.groupby(df.index).sum().sum(1))
User1    5
User2    1
User3    2
dtype: int64

如果沒有重復項,請僅使用sum -Psidom注釋

df.sum(axis=1)

編輯:

import matplotlib.pyplot as plt

df.sum(axis=1).plot.hist()
plt.show()

圖形

使用DataFrame的轉置方法。

In [38]: d = pd.DataFrame({'A':[1,0,1],'B':[1,1,0],'C':[0,0,1]},index=['User1','User2','User3'])

In [39]: d
Out[39]:
       A  B  C
User1  1  1  0
User2  0  1  0
User3  1  0  1

In [40]: d.transpose()
Out[40]:
   User1  User2  User3
A      1      0      1
B      1      1      0
C      0      0      1

In [41]: d.transpose().sum()
Out[41]:
User1    2
User2    1
User3    2
dtype: int64

或者,按照Psidom的建議,對DataFrame的列求和。

In [55]: d.sum(axis=1)
Out[55]:
User1    2
User2    1
User3    2
dtype: int64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM