如果列值匹配,则返回值列表,否则在列表中添加0

时间:2018-07-19 14:26:05

标签: python list pandas dataframe

我只是尝试进行循环,但是没有用, 我的数据在哪里

      label_count  label     aging_period
0            21     good          0-3
1             1      TNR          3-6
2            80  average          3-6
3            19      bad          3-6
4            75     good          3-6
5            13     TOTB          6-9
6           104  average          6-9
7           128      bad          6-9
8            56     good          6-9
9            12     TOTB         9-12
10          101  average         9-12
11          275      bad         9-12
12           35     good         9-12
13            5     TOTB        12-24
14           26  average        12-24
15           46      bad        12-24
16           20     good        12-24
17            1     TOTB          24+
18            1  average          24+
19            3     good          24+

我想要一个类似的值的列表,

average =  [0, 80, 104, 101, 26, 1]
   bad = [0, 19, 128, 275, 46, 0]

现在,由于没有0-3的平均值,因此加0。

我的意思是,对于每个“ aging_period”和每个标签(如果存在数据),则添加其核心,然后添加label_count,否则在列表中添加0

1 个答案:

答案 0 :(得分:2)

您可以先使用pivot然后使用fillna

df.pivot('label','aging_period','label_count').fillna(0).astype(int)
Out[557]: 
aging_period  0-3  12-24  24+  3-6  6-9  9-12
label                                        
TNR             0      0    0    1    0     0
TOTB            0      5    1    0   13    12
average         0     26    1   80  104   101
bad             0     46    0   19  128   275
good           21     20    3   75   56    35

然后切片您需要的索引

nedf=df.pivot('label','aging_period','label_count').fillna(0).astype(int)
nedf.loc['average'].tolist()
Out[559]: [0, 26, 1, 80, 104, 101]