Python:如何计算数据框中特定列中的特定值

时间:2018-09-20 11:53:53

标签: python pandas dataframe count

我有一个特定的csv,例如:

col1 col2 col3 col4

a    1    2     3

b    1    2     1 

c    1    1     3

d    3    1     2 

我想例如计算一个特定值的数量。 col2,col3和col4中为1

我正在通过熊猫使用以下代码

import pandas as pd

fname = input('Enter the filename:')
df = pd.read_csv (fname, header='infer')
one = df.iloc[:,1:4].value_counts(normalize=False).loc[1]

显示错误,但是当我对特定的已定义列执行相同操作时,代码将正常运行

import pandas as pd
fname = input('Enter the filename:')
df = pd.read_csv (fname, header='infer')
one = df[col1].value_counts(normalize=False).loc[1]

我想要以下输出

col2 3

col3 2

col4 1

任何帮助或提示将不胜感激!先感谢您。 :)

2 个答案:

答案 0 :(得分:3)

使用具有期望值的eq,即1,然后将sum用作:

df1[['col2', 'col3', 'col4']].eq(1).sum()

col2    3
col3    2
col4    1
dtype: int64

答案 1 :(得分:0)

当我寻找一种方法来检查以下数据框(名为“ trade_track”)的“购买”和“出售”列上有多少个值实际上高于/低于零时,我遇到了这个问题:

main()

这是一个有效的简单代码:

(i)在“购买”列上查找所有大于零的数字:

Ticker  Pre-trade  Buys  Sells  Net Exposure Ch.  Post-trade
CX        10126.0   0.0 -964.0         -0.095200      9162.0
OI         3311.0   0.0  -24.0         -0.007249      3287.0
THO         748.0   0.0  -33.0         -0.044118       715.0
WRK        1002.0   0.0  -43.0         -0.042914       959.0
TAP         646.0   0.0   -4.0         -0.006192       642.0
TRN        1987.0   0.0  -93.0         -0.046804      1894.0
SJM         312.0   6.0    0.0          0.019231       318.0
WW         1100.0   0.0  -22.0         -0.020000      1078.0
FAST       -655.0  13.0    0.0         -0.019847      -642.0
CSX        -301.0   6.0    0.0         -0.019934      -295.0
ODFL       -123.0   0.0    0.0         -0.000000      -123.0
HELE       -130.0   0.0    0.0         -0.000000      -130.0
SBUX       -203.0   0.0    0.0         -0.000000      -203.0
WM         -166.0   0.0    0.0         -0.000000      -166.0
HD          -90.0   2.0    0.0         -0.022222       -88.0
VMC        -141.0   0.0    0.0         -0.000000      -141.0
CTAS        -76.0   2.0    0.0         -0.026316       -74.0
ORLY        -53.0   0.0    0.0         -0.000000       -53.0

(ii)在“购买”列上找到全零:

((trade_track['Buys'])>0).sum()