大熊猫数据框的一个特定项目的计数

时间:2018-04-23 08:34:02

标签: python pandas

我使用了以下行来获取

的数量

从文件的特定列(包含READ,WRITE,NOP)中“读取”。这不是csv文件,而是带有\ t作为分隔符的.out文件。

    data = pd.read_csv('xaa',usecols=[1], header=None,delimiter='\t')
    df2=df1.iloc[start:end,]

    count=df2.str.count("R").sum()

我收到错误

  

AttributeError:

     

'DataFrame'对象没有属性'str'

但是当我使用

 if filename.endswith(".csv"): 
        data = pd.read_csv(filename)
df1=data.loc[:,"operation"]
df2=df1.iloc[start:end,] 
count=df2.str.count("R").sum()

没有错误。但在这里我必须输入每个csv文件。我必须打开文件并在我需要的列中插入“操作”。 KIndly给予灵魂

2 个答案:

答案 0 :(得分:1)

我认为需要为1选择列Series,否则会获得一列DataFrame

count=df2[1].str.count("R").sum()

或按sum的{​​{3}}和True进行比较:

count=df2[1].eq("R").sum()

编辑:

另一种解决方案是通过参数Seriesread_csv中返回squeeze

s = pd.read_csv('xaa',usecols=[1], header=None,delimiter='\t', squeeze=True)

count=s.iloc[start:end].str.count("R").sum()

#for another solution
#count=s.iloc[start:end].eq("R").sum()

<强>示例

df2 = pd.DataFrame({1:['R','RR','Q']})
print (df2)
    1
0   R
1  RR
2   Q

#count all substrings
count=df2[1].str.count("R").sum()
print (count)
3

#count only strings
count=df2[1].eq("R").sum()
print (count)
1

答案 1 :(得分:0)

只需将0添加到df2作业:

data = pd.read_csv('xaa',usecols=[1], header=None,delimiter='\t')
df2=df1.iloc[start:end, 0]

count=df2.str.count("R").sum()

我认为应该是:

df2 = data.iloc[start:end, 0]

但也许您还有一些其他步骤可以创建df1