通过使用pandas将两列组合到一列来重建数据帧

时间:2015-03-01 19:42:52

标签: python pandas dataframe

我希望通过将两列合并为一列来重建我的数据框,例如,

>>>df.set_index('df1')  
        0 1 2 3 4 5
df1
GroupA  A D G J M P
GroupB  B E H K N Q
GroupC  C F I L O R   #It is my dataframe.

然后我想看看下面的结果。

 >>>print result
    df1     0  1  2
    GroupA  AD GJ MP  
    GroupB  BE HK NQ
    GroupC  CF IL OR  

#which means column0 is combined with column1, and 2+3, and 4+5......etc

我只知道我可以使用concat()来组合列,并使用apply(lambda xxx...)来设置合适的功能。

有没有人可以通过在python中使用pandas给我一个提示或知道如何获得它?谢谢,

1 个答案:

答案 0 :(得分:0)

您要求做的有点奇怪,但基本上我们可以按2步迭代列,然后在df的子部分调用sum并传递axis=1,这将连接str值。一个棘手的问题是你的列是数字,当使用方括号时,它会尝试将列名称解析为str,这意味着col+1无法工作,这就是为什么我将它转换为int

In [32]:

dfnew = pd.DataFrame()
for col in df.columns[::2]:
    c = int(col)
    dfnew[col] = df[[c,c+1]].sum(axis=1)
dfnew
Out[32]:
         0   2   4
df1               
GroupA  AD  GJ  MP
GroupB  BE  HK  NQ
GroupC  CF  IL  OR

修改

通用方法使用列数的长度生成整数索引以索引到列数组中并从中提取列名以执行选择,这将适用于您的df以及df具有str名称的位置:

In [26]:

dfnew = pd.DataFrame()
for i in range(len(df.columns))[::2]:
    col_1 = df.columns[i]
    col_2 = df.columns[i+1]
    dfnew[col_1] = df[[col_1,col_2]].sum(axis=1)
dfnew
Out[26]:
         0   2   4
df1               
GroupA  AD  GJ  MP
GroupB  BE  HK  NQ
GroupC  CF  IL  OR