熊猫系列可以计算另一个熊猫系列中的值

时间:2018-06-07 01:21:08

标签: python pandas

我在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)

1 个答案:

答案 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