如何计算每个x条目并用熊猫数据框中的值标记该序列的出现?

时间:2019-06-26 10:42:53

标签: pandas dataframe pandas-groupby

我想创建一列C(基于B),该列对B(或通常的数据帧)中4个条目系列的每个开始进行计数。我有以下熊猫数据框:

A B 
1 100
2 102
3 103
4 104
5 105
6 106
7 108
8 109
9 110
10 112
11 113
12 115
13 116
14 118
15 120
16 121

我要创建以下C列:

A C
1 1
2 1
3 1
4 1
5 2
6 2
7 2
8 2
9 3
10 3
11 3
12 3
13 4
14 4
15 4
16 4

C列应统计数据帧的每个系列4个条目。

谢谢。

2 个答案:

答案 0 :(得分:2)

使用:

df['C'] = df.index // 4 + 1

鉴于您的数据框相当简单,可以假设您拥有一个RangeIndex对象的通用索引。

在您的示例中,它看起来像这样:

df.index
#RangeIndex(start=0, stop=16, step=1)

该索引的值如下:

df.index.values
#array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15], dtype=int64)

使用以下公式将此类数组转换为所需的输出:

x // 4 + 1

//floor division使用的运算符。

答案 1 :(得分:1)

一般的解决方案是通过np.arange创建numpy数组,然后使用4进行整数除法并添加1,因为python从0开始计数:

df['C'] = np.arange(len(df)) // 4 + 1
print (df)
     A    B  C
0    1  100  1
1    2  102  1
2    3  103  1
3    4  104  1
4    5  105  2
5    6  106  2
6    7  108  2
7    8  109  2
8    9  110  3
9   10  112  3
10  11  113  3
11  12  115  3
12  13  116  4
13  14  118  4
14  15  120  4
15  16  121  4