迭代在python中追加以前的值

时间:2018-03-26 18:12:42

标签: python pandas

我有以下数据框:

       Date    A   B  
 =====================
 2015-01-01    A   0
 2015-01-02    A   1
 2015-01-03    A   0
 2015-01-01    B   0
 2015-01-02    B   0
 2015-01-03    B   0
 2015-01-04    B   1
 2015-01-05    B   1

需要:

       Date    A   B       C
 ===========================
 2015-01-01    A   0       0
 2015-01-02    A   1      01
 2015-01-03    A   0     010
 2015-01-01    B   0       0
 2015-01-02    B   0      00
 2015-01-03    B   0     000
 2015-01-04    B   1    0001
 2015-01-05    B   1   00011

Column C是通过2015-01-03之前的value来为B派生的。

这是我到目前为止所做的最好的,但它会将所有值附加到一个组中。之前的转变尝试对我来说并不成功。

df2 = df.groupby('Date', 'A')['B'].apply(''.join).reset_index()
df = df.merge(df2, on=['Date', 'A'], how='left')

1 个答案:

答案 0 :(得分:5)

尝试

df1['C'] = df1.groupby('A').B.apply(lambda x: x.astype(str).cumsum())


    Date        A   B   C
0   2015-01-01  A   0   0
1   2015-01-02  A   1   01
2   2015-01-03  A   0   010
3   2015-01-01  B   0   0
4   2015-01-02  B   0   00
5   2015-01-03  B   0   000
6   2015-01-04  B   1   0001
7   2015-01-05  B   1   00011