我有一个特定的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
任何帮助或提示将不胜感激!先感谢您。 :)
答案 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()