【问题标题】:Append row in dataframe if certain condition is met in another row of the dataframe如果在数据帧的另一行中满足特定条件,则在数据帧中追加行
【发布时间】:2021-04-22 03:45:32
【问题描述】:

我有一个如下所示的数据框:

BILL_NO   CREATED_DATE   ACCT_NO   LOCATION   AMOUNT
100       4/6/2021       7551      1150       1000.00
200       4/6/2021       7551      1101       500.00
300       4/6/2021       7551      2025       700.00

我想做的是这样的:

如果值“1550”在数据框中的“LOCATION”列中,则附加一行具有相同值的行,但位置将是“2051”并且金额应在两者之间分配。

输出应该是这样的:

BILL_NO   CREATED_DATE   ACCT_NO   LOCATION   AMOUNT
100       4/6/2021       7551      1150       500.00
200       4/6/2021       7551      1101       500.00
300       4/6/2021       7551      2025       700.00
100       4/6/2021       7551      2051       500.00

我尝试编写一个函数并为此使用 lambda 表达式,但所有数量都变成了 NaN 值,并且没有附加任何行。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    在这里试试你的逻辑:

    # all the location 1150
    mask = df.LOCATION==1150
    
    # divide by two
    df.loc[mask, 'AMOUNT']/=2
    
    # append those rows with new location value
    df.append(df.loc[mask].assign(LOCATION=2051))
    

    输出:

       BILL_NO CREATED_DATE  ACCT_NO  LOCATION  AMOUNT
    0      100     4/6/2021     7551      1150   500.0
    1      200     4/6/2021     7551      1101   500.0
    2      300     4/6/2021     7551      2025   700.0
    3      100     4/6/2021     7551      2051   500.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多