在DataFrame_2 ...条件的情况下动态创建DataFrame_1

时间:2019-06-03 07:13:09

标签: python pandas

我有2列10行的df。 如果我从第1列-> 5个唯一性中选择唯一性。 我想创建第二个数据框。 第1列:不重复->行(1列+ 5个不重复) 第2列:DataFrame_1的总和,其中第1列==每个唯一身份)

例如: DataFrame_1:

col_1:1,2,3,4,5,4,3,4,3,2

col_2:10,20,10,50,60,20,80,10,20,30

我需要什么: DataFram_2:

col_1:1、2、3、4、5

col_2:10,50,110,80,60

以下是我无法解决的错误

  placement:
    constraints: [node.labels.service == myservice1 ]

第二个任务

我需要选择数据框第一列的唯一性,并将它们作为第一列添加到第二个数据框(新创建的)中->然后添加与每个唯一性相关的以下列。 我得到类似以下的内容

Data = {'First Field Name':  [1,2,3,2,3,4,3,2,1],
        'Second Field Name': [12,32,4,32,43,54,11,23,43],}
uniques = df["First Field Name"].unique()


df2 = DataFrame()
for unique in uniques:
    df2[unique] = df[unique].sum(axis=0).where(df["First Fiel Name"] == unique)

我需要以下内容

   First Field Name  Second Field Name
0                 1                 12
1                 2                 32
2                 3                  4
3                 2                 32
4                 3                 43
5                 4                 54
6                 3                 11
7                 2                 23
8                 1                 43

2 个答案:

答案 0 :(得分:0)

在col_1上使用groupby,然后对剩余的列(= col_2)求和

df1 = pd.DataFrame({'col_1':  [1,2,3,2,3,4,3,2,1],
        'col_2': [12,32,4,32,43,54,11,23,43],})
df2 = df1.groupby('col_1').sum().reset_index()
df2
   col_1  col_2
0      1     55
1      2     87
2      3     58
3      4     54

答案 1 :(得分:0)

您可以尝试以下方法:

d={'col_1':[1,2,3,4,5,4,3,4,3,2],
  'col_2':[10,20,10,50,60,20,80,10,20,30]}
df1=pd.DataFrame(d)
df2=df1.groupby(by='col_1').agg(sum).reset_index()
print(df1)
print(df2)

输出:

   col_1  col_2
0      1     10
1      2     20
2      3     10
3      4     50
4      5     60
5      4     20
6      3     80
7      4     10
8      3     20
9      2     30

   col_1  col_2
0      1     10
1      2     50
2      3    110
3      4     80
4      5     60

希望这可以为您提供帮助:)