Python Pandas系列用于计算另一个Pandas系列中的值

Python Pandas系列用于计算另一个Pandas系列中的值,python,pandas,Python,Pandas,我在Pandas(s1)中创建了一个系列,用于根据原始数据帧中的列('d1')计算这些固定数字(1-14)的实例数。 我想要的在这里显示(次) csv文件的样本在这里 date d1 d2 d3 d4 d5 d6 d7 17/12/22 9 10 12 15 24 32 33 17/12/22 3 9 13 17 27 32 46 17/12/22 4 12 13 19 25 26 29 17/12/22 5

我在Pandas(s1)中创建了一个系列,用于根据原始数据帧中的列('d1')计算这些固定数字(1-14)的实例数。 我想要的在这里显示(次)

csv文件的样本在这里

   date d1  d2  d3  d4  d5  d6  d7
17/12/22    9   10  12  15  24  32  33
17/12/22    3   9   13  17  27  32  46
17/12/22    4   12  13  19  25  26  29
17/12/22    5   12  14  30  35  40  49
17/12/22    1   4   8   11  15  38  44
17/12/22    8   16  17  29  34  37  42
17/12/22    3   9   16  20  28  33  43
17/12/22    9   12  14  19  29  44  46
17/12/22    1   15  19  27  28  37  38
17/12/29    22  23  26  35  37  39  47
18/01/05    1   3   13  15  28  36  49
18/01/12    1   8   16  19  26  34  41
18/01/19    9   18  25  30  39  40  43
运行代码不会产生错误,但我不知道如何从1循环到14,并统计数据集中出现的次数(d1)。我的代码如图所示

import pandas as pd

pd.options.display.max_rows = 999

df = pd.read_csv("lmax_full.csv", index_col=False)

df.drop('date', axis=1, inplace=True)  # count the times drawn under 'd1'
count_dA = df.d1.value_counts()
print(count_dA.head())  # print the count of 'd1'
s1 = pd.Series(range(1, 15), index=None)  
print(s1)


# using Series s1 from 1-14 apply a loop count across all rows on 'd1'
# to get counts of each number in s1
def count_d1(count):
    for i in s1:
        count = s1.apply(pd.count_dA.value_counts)
        i += 1
    return count

print(count_dA)

据我所知,基于样本数据,您可以遵循以下方法:

ser = pd.concat([df['d1'].value_counts(), pd.Series([np.nan]*14, index=range(1,15), name='d1')]).sort_index()
ser = ser[~ser.index.duplicated()].fillna(0).astype(int)[:14]
s1 = pd.DataFrame({
    'Times':ser
})
输出:

Times
1   4
2   0
3   0
4   1
5   0
6   0
7   0
8   1
9   3
10  0
11  0
12  0
13  0
14  0

您能否显示特定于输入数据的预期输出?我没有看到您在代码中提到最后一列。这是如何计算的?是的,有效。我将您的代码粘贴到我的代码中,它给出了预期的结果。但我必须试着去理解它是如何工作的。它是矢量化的吗?这里有些东西;如果我在整个数据集上运行“count_dA.head(20)”,那么12=14乘以13=13乘以14=7次新代码显示12=0乘以13=0乘以14=0次我猜我可能错了,代码直到列“d1”结束时才在所有行中拾取完整的“d1”值。我问题顶部指示的时间是正确的值计数。是的,你是对的。这里的输出是您在问题中给出的示例输入。很高兴它成功了@罗伯塔夫,密码是什么。需要允许在整个“d1”列上生成输出。正如我试图解释的,现在运行代码时,所有450行的12、13、14都为零。值应分别为14,13,7。请参见上面“我想要的显示在这里”的部分。
Times
1   4
2   0
3   0
4   1
5   0
6   0
7   0
8   1
9   3
10  0
11  0
12  0
13  0
14  0