添加具有值翻转的重复Pandas行

时间:2015-08-25 22:40:48

标签: python pandas

我知道 - 令人困惑的头衔。但是听我说。

如果我有这样的熊猫DF:

  date       team opponent
0  20141028      magic  hornets
1  20141028  mavericks    spurs
2  20141029      76ers   pacers

我想在其中创建一个DF,其中行是重复的,但是' team'和对手'价值是翻转的,我怎么能在熊猫中做到最好?

所以我想要这个:

  date       team opponent
0  20141028      magic  hornets
1  20141028    hornets    magic
2  20141028  mavericks    spurs
3  20141028      spurs mavericks
4  20141029      76ers   pacers
5  20141029     pacers   76ers

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用翻转的列创建另一个名为df的数据框,然后将其附加到df1 = df.copy() df1.columns = ['date', 'opponent', 'team'] df.append(df1).sort_index().reset_index(drop=True) date opponent team 0 20141028 hornets magic 1 20141028 magic hornets 2 20141028 spurs mavericks 3 20141028 mavericks spurs 4 20141029 pacers 76ers 5 20141029 76ers pacers

{{1}}

答案 1 :(得分:1)

您可以重新排列列,然后连接。

df_new = pd.concat([df, pd.DataFrame(df[['date', 'opponent', 'team']].values,
                                     columns=['date', 'team', 'opponent'])])
>>> df_new 
       date       team   opponent
0  20141028      magic    hornets
1  20141028  mavericks      spurs
2  20141029      76ers     pacers
0  20141028    hornets      magic
1  20141028      spurs  mavericks
2  20141029     pacers      76ers

如果你真的需要你指定的顺序(原始对后跟反向对),你可以按@ Jianxun Li的建议对其进行排序:

df_new.sort_index().reset_index(drop=True)