【问题标题】:pandas dataframe groupby and fill with first row values熊猫数据框 groupby 并填充第一行值
【发布时间】:2020-11-13 22:50:57
【问题描述】:

我有一个这样的df,

df = pd.DataFrame({
    "Name" : ["A","B","C","D","E","F","G"],
    "part number" : ["1","3","2","1","5","1","2"],
    "detail1" : ["A","C","B","B","E","E","E"],
    "detail2" : ["one","three","two","two","five","five","five"]
})


df
Name    part number detail1 detail2
A           1           A   one
B           3           C   three
C           2           B   two
D           1           B   two
E           5           E   five
F           1           E   five
G           2           E   five

我想按零件编号分组,并用第一行值填充 detail1 和 detail2。

我的预期输出,

Name    part number detail1 detail2
A       1           A       one
B       3           C       three
C       2           B       two
D       1           A       one
E       5           E       five
F       1           A       one
G       2           B       two

我试过了,df.groupby("part number")[["detail1","detail2"]].first() 但没有给出预期的输出,请帮忙。

【问题讨论】:

    标签: python pandas group-by transform


    【解决方案1】:

    part number 上使用groupby 并使用first 转换列detail1detail2 并将转换后的列分配回df

    cols = ['detail1', 'detail2']
    df[cols] = df.groupby('part number')[cols].transform('first')
    

    结果:

    print(df)
      Name part number detail1 detail2
    0    A           1       A     one
    1    B           3       C   three
    2    C           2       B     two
    3    D           1       A     one
    4    E           5       E    five
    5    F           1       A     one
    6    G           2       B     two
    

    【讨论】:

    • 我知道我们可以在变换中传递“第一”,非常好:D
    • 是的,有很多ufuncs,我们可以通过transform..
    猜你喜欢
    • 2019-01-05
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2020-11-06
    • 2016-12-11
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多