【问题标题】:How to append a row to a dataframe based on a condition following to the new row?如何根据新行后面的条件将行附加到数据框中?
【发布时间】:2022-10-13 22:55:52
【问题描述】:

使用以下数据框:

    name abbreviation     X     Y  Quantity Max Quantity
0    A-x            A  15.6  19.4         1            2
1   A-y2            A  15.6  19.4         2            2
2    B-a            B  15.0  25.0         1            2
3    B-d            B  15.0  25.0         2            2
4   C-x1            C  15.0  10.0         1            3
5   C-c4            C  15.0  10.0         2            3
6    C-5            C  15.0  10.0         3            3
7    E-v            E  83.4  16.5         1            4
8    E-2            E  83.4  16.5         2            4
9   E-v2            E  83.4  16.5         3            4
10   E-1            E  83.4  16.5         4            4 
11  F-ab            F  19.1  98.4         1            2
12  F-nb            F  19.1  98.4         2            2
13  G-ku            G  78.0  17.0         1            1

根据 x 和 y 坐标,计算相同坐标对的数量(第 5 列),每对的最大数量在第 6 列。

现在我想在每个坐标对之前生成一个新行,然后再对其进行计数,其中包含名称的缩写,与以下行相同的 x 和 y 值以及数量为 0。

    name site_abbreviation  POS_X  POS_Y  Quantity  Max Quantity
0      A                 A   15.6   19.4         0             2
1    A-x                 A   15.6   19.4         1             2
2   A-y2                 A   15.6   19.4         2             2
3      B                 B   15.0   25.0         0             2
4    B-a                 B   15.0   25.0         1             2
5    B-d                 B   15.0   25.0         2             2
6      C                 C   15.0   10.0         0             3
7   C-x1                 C   15.0   10.0         1             3
8   C-c4                 C   15.0   10.0         2             3
9    C-5                 C   15.0   10.0         3             3
10     E                 E   83.4   16.5         0             4
11   E-v                 E   83.4   16.5         1             4
12   E-2                 E   83.4   16.5         2             4
13  E-v2                 E   83.4   16.5         3             4
14   E-1                 E   83.4   16.5         4             4
15     F                 F   19.1   98.4         0             2
16  F-ab                 F   19.1   98.4         1             2
17  F-nb                 F   19.1   98.4         2             2
18     G                 G   78.0   17.0         0             1
19  G-ku                 G   78.0   17.0         1             1

这就是它最终的样子。

问题是在它所依赖的行之前添加新行。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    让我们将abbreviation 分组,并在每个组之前添加一行,Quantity 列为 0,name 列为abbreviation 列的值

    out = (df.groupby(['abbreviation'], as_index=False)
           .apply(lambda g: pd.concat([pd.DataFrame([dict(g.iloc[0].to_dict(),
                                                          **{'Quantity': 0, 'name': g.name})]),
                                       g]))
           .reset_index(drop=True))
    
    print(out)
    
        name abbreviation     X     Y  Quantity  Max Quantity
    0      A            A  15.6  19.4         0             2
    1    A-x            A  15.6  19.4         1             2
    2   A-y2            A  15.6  19.4         2             2
    3      B            B  15.0  25.0         0             2
    4    B-a            B  15.0  25.0         1             2
    5    B-d            B  15.0  25.0         2             2
    6      C            C  15.0  10.0         0             3
    7   C-x1            C  15.0  10.0         1             3
    8   C-c4            C  15.0  10.0         2             3
    9    C-5            C  15.0  10.0         3             3
    10     E            E  83.4  16.5         0             4
    11   E-v            E  83.4  16.5         1             4
    12   E-2            E  83.4  16.5         2             4
    13  E-v2            E  83.4  16.5         3             4
    14   E-1            E  83.4  16.5         4             4
    15     F            F  19.1  98.4         0             2
    16  F-ab            F  19.1  98.4         1             2
    17  F-nb            F  19.1  98.4         2             2
    18     G            G  78.0  17.0         0             1
    19  G-ku            G  78.0  17.0         1             1
    

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2023-02-20
      • 2017-06-22
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多