Python Pandas系列用于计算另一个Pandas系列中的值
我在Pandas(s1)中创建了一个系列,用于根据原始数据帧中的列('d1')计算这些固定数字(1-14)的实例数。 我想要的在这里显示(次) csv文件的样本在这里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
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