如何在列的某些起始行和结束行之间找到单元格值的重复记录计数?

时间:2017-09-06 16:32:52

标签: python pandas dataframe

我想将excel公式=COUNTIF(A4:A11,A4)转换为python代码。 这里A4是开始行,A11是我选择的结束行,我想查找来自A4的单元格中A4单元格中出现的值的次数行到A11

我已将excel文件中的数据加载到pandas DataFrame中。

3 个答案:

答案 0 :(得分:0)

这是一个示例数据框。

In [307]: df
Out[307]:
    a
0   0
1   1
2   2
3   3
4   1
5   1
6   4
7   5
8   1
9   1
10  5
11  0
12  0
13  0
14  1

In [308]: df[df['a'] == df['a'].iloc[4]]['a'].loc[4:11].count()
Out[308]: 4

或者,

In [315]: df[df['a'] == df['a'].iloc[4]].loc[4:11, 'a'].count()
Out[315]: 4

或者,

In [323]: df.loc[4:11].query('a== @df.a.iloc[4]')['a'].count()
Out[323]: 4

或者,

In [319]: df.loc[4:11, 'a'].eq(df.a.iloc[4]).sum()
Out[319]: 4

答案 1 :(得分:0)

让我们先填充DataFrame(您可能正在使用read_csv或其他东西)。

int isAbsolute(const char *str){
    return (str[0] == '/');
}

您可以使用

访问数据框的一部分
df = pd.DataFrame({"a": [1, 0, 2, 3, 1, 1, 3, 5,1, 0, 1, 3, 7, 9]})

从这里开始,我们希望仅限制与df[4:11+1] # does the same thing as `A4:A11` in terms of grabbing only those rows 匹配的值。我们这样做

A4

然后,我们想要计算这些事件:

df[4:11+1][df["a"] == df["a"][4]]

答案 2 :(得分:0)

使用numpy

np.count_nonzero(np.in1d(df['a'][4:12],df['a'][4]))