如何将多个熊猫系列串联成一行?

时间:2019-05-13 10:52:12

标签: python pandas concatenation series

目标:我有两个Pandas Series。我想对每个列应用一个函数,该函数为该列提供一些摘要统计信息(例如sumcount等)。所有这些都嵌入在for``循环中。例如:

DataFrame1
    Id      V1       V2    
    0       3        2
    1       2        1

DataFrame2
    Id      T1       T2    
    0       4        2
    1       5        2

(计数任务上的)结果应该是:

DataFrameGoal
    Id      V1       V2      T1       T2  
    0       2        2       2        2

我的代码可以正常工作,但是我得到的解决方案是:

DataFrameGoal
    Id      V1       V2      T1       T2  
    0       2        2       NaN      NaN
    1       NaN      NaN     2        2

我的代码:

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'a' : np.random.randn(6),
                 'b' : np.random.randn(6),
                 'c' : np.random.randn(6)})

df2 = pd.DataFrame({'d' : np.random.randn(6),
                 'e' : np.random.randn(6),
                 'f' : np.random.randn(6)})

def mysum(col):
    return col.count()

lst = []
lst.append(df1)
lst.append(df2)

myDf = pd.DataFrame()

for el in lst:
    test = el.apply(lambda cols: mysum(cols))
    myDf = myDf.append(test, ignore_index=True)

print(myDf)

有人能帮助我获得我想要的结果吗?我也尝试过.assign,但这也无法解决我的问题。 附注:我知道简单的事情(例如计数或总和)可以很容易地完成,但是我有一些复杂的任务,这只是一个简单的例子。

2 个答案:

答案 0 :(得分:1)

尝试一下

pd.concat([df1,df2], axis=1)

然后应用所需的任何功能。

答案 1 :(得分:0)

很难说问题出在连接数据帧还是形成mySum()。但是您可以尝试:

myDf = (pd.concat(el.apply(lambda cols: mySum(cols)) 
                   for el in [df1,df2])
          .to_frame().T)