循环基于Python Dataframe中的其他列值创建新列

时间:2019-04-30 06:39:42

标签: python-3.x pandas jupyter-notebook

我想基于多行中的其他列值在python数据框中创建一个新列。 例如,我的python数据框df:

A    |    B
------------
10   |    1
20   |    1
30   |    1
10   |    1
10   |    2
15   |    3
10   |    3

我想基于变量A的值创建变量C,并在多行中使用变量B的条件。当第i,i + 1,...行中的变量B的值时,C的值是这些行中变量A的总和。在这种情况下,我的输出数据帧将是:

  A   |   B   |   C
--------------------
  10  |   1   |   70
  20  |   1   |   70
  30  |   1   |   70
  10  |   1   |   70
  10  |   2   |   10
  15  |   3   |   25
  10  |   3   |   25

我不知道实现此目标的最佳方法。有人可以帮忙吗?

预先感谢

2 个答案:

答案 0 :(得分:1)

重新创建数据:

import pandas as pd

A = [10,20,30,10,10,15,10]

B = [1,1,1,1,2,3,3]

df = pd.DataFrame({'A':A, 'B':B})

df

     A   B
0   10   1
1   20   1
2   30   1
3   10   1
4   10   2
5   15   3
6   10   3

然后我将根据df创建一个查找系列:

lookup = df.groupby('B')['A'].sum()
lookup

    A
B
1   70
2   10
3   25

然后我将使用Apply在df上使用该查找

df.loc[:,'C'] = df.apply(lambda row: lookup[lookup.index == row['B']].values[0], axis=1)
df

         A   B    C
    0   10   1   70
    1   20   1   70
    2   30   1   70
    3   10   1   70
    4   10   2   10
    5   15   3   25
    6   10   3   25

答案 1 :(得分:0)

您必须使用final String Ptrbilldate = getIntent().getStringExtra("Ptrbilldate"); editTextdatepetrolbill.setText(Ptrbilldate); 方法将groupby()上的行和B上的sum()分组。

A