我有一组“单向”航空公司数据,如下所示(实际数据中的每一行数字不是连续的或相同的):

origin dest    a  b  c  d  e  f
BOS    JFK     1  2  3  4  5  6
       DCA     1  2  3  4  5  6
JFK    BOS     1  2  3  4  5  6
       DCA     1  2  3  4  5  6
DCA    BOS     1  2  3  4  5  6
       JFK     1  2  3  4  5  6


我想获取“多向”数据,即如下所示的数据:

air1 air2    a  b  c  d  e  f
BOS  JFK     2  4  6  8  10 12
     DCA     2  4  6  8  10 12
JFK  DCA     2  4  6  8  10 12


我一直在试验数据透视表,但是到目前为止,还没有找到任何远程有用的解决方案。

最佳答案

您可以先按行对origindest列进行排序,然后再进行groupbysum,因为看起来好像您的结果并不关心origindest的顺序:

import pandas as pd

df.reset_index(["origin", "dest"])
od = df.loc[:,'origin':'dest'].as_matrix()
od.sort()
df[['air1','air2']] = pd.DataFrame(od)
df.groupby(['air1','air2']).sum()

            a   b   c   d   e   f
air1 air2
BOS  DCA    2   4   6   8   10  12
     JFK    2   4   6   8   10  12
DCA  JFK    2   4   6   8   10  12

关于python - 在 Pandas 中添加具有重复索引的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38002962/

10-12 21:42