【问题标题】:Pandas - add row with inverted values based on conditionPandas - 根据条件添加具有反转值的行
【发布时间】:2022-11-13 08:17:09
【问题描述】:

在这样的数据框中:

...
      match     team         opponent venue  
233   3b0345fb  Brazil     Argentina  Home       
234   3b2357fb  Argentina     Brazil  Away       
427   3b0947fb  England       Poland  Home           
...

如何根据列值 (df[df['team']=='England']) 选择一个数据帧切片,如下所示:

...
        match   team    opponent venue  
559   4a3eae2f  England  Poland  Home  
...

并将该切片的反转行添加到原始数据框中,将“Home”更改为“Away”,最后是:

...
      match     team        opponent venue  
233   3b0345fb  Brazil     Argentina  Home       
234   3b2357fb  Argentina     Brazil  Away       
559   3b0947fb  England      Poland   Home 
560   3b0947fb  Poland      England   Away                    
...

注意:此切片应包含 n 行并产生 n 个反转行。

【问题讨论】:

标签: pandas


【解决方案1】:

您可以使用:

df2 = df[df['team'].eq('England')].copy()
df2[['team', 'opponent']] = df2[['opponent', 'team']]
out = pd.concat([df, df2])
print(out)

输出:

        match       team   opponent venue
233  3b0345fb     Brazil  Argentina  Home
234  3b2357fb  Argentina     Brazil  Away
427  3b0947fb    England     Poland  Home
427  3b0947fb     Poland    England  Home

如果要反转所有:

df2 = df.copy()
df2[['team', 'opponent']] = df2[['opponent', 'team']]
out = pd.concat([df, df2])

输出:

        match       team   opponent venue
233  3b0345fb     Brazil  Argentina  Home
234  3b2357fb  Argentina     Brazil  Away
427  3b0947fb    England     Poland  Home
233  3b0345fb  Argentina     Brazil  Home
234  3b2357fb     Brazil  Argentina  Away
427  3b0947fb     Poland    England  Home

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2023-03-16
    • 2013-07-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多