系列字典与其他列的累积结果

时间:2015-01-22 17:34:39

标签: python pandas series

我有以下数据框,我试图创建新的C列,使其基于列'A'和'B'的累积值作为字典。而且,如果列'B'中的'0',则该键的条目将从'C'中删除

df = DataFrame({'A' : [1,2,3,2,3,2],
            'B':['Hi','Hello','HiWorld','HelloWorld','0','0']})

for indx,row in df.iterrows():
    df['C'].append(dict(zip([row['A'],row['B']])))

我在C列中寻找以下输出:

   A              B             C
0  1             Hi            {1:Hi}
1  2          Hello            {1:Hi,2:Hello}
2  3        HiWorld            {1:Hi,2:Hello,3:HiWorld}
3  2     HelloWorld            {1:Hi,2:HelloWorld,3:HiWorld}
4  3              0            {1:Hi,2:HelloWorld}
5  2              0            {1:Hi}

我尝试过使用cumsum,concat& amp; series.shift(1)但有一个块。现在我遇到了使用dict&拉链似乎是干净的解决方案,但对我不起作用。任何建议。

1 个答案:

答案 0 :(得分:0)

试试这个:

d = dict()
column = list()
for _, a, b in df.itertuples():
    if b != '0':
        d[a] = b
    else:
        d.pop(a, None)
    column.append(d.copy())

df['C'] = column