我在Pandas(s1)中创建了一个系列,用于计算原始DataFrame中列('d1')的固定数字(1-14)的实例数。 我想要的是这里显示的(时代);
s1 Last Times
1 2 72
2 34 59
3 15 48
4 0 30
5 13 39
6 4 28
7 6 34
8 3 31
9 17 17
10 32 15
11 1 15
12 102 14
13 9 13
14 51 7
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)
答案 0 :(得分:1)
据我了解,您可以根据样本数据遵循以下方法:
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