Как объединить несколько серий панд в один ряд? - PullRequest
0 голосов
/ 13 мая 2019

Цель: у меня два Pandas Series.К каждому я хочу применить функцию, которая дает мне некоторую обобщающую статистику для столбца (например, sum, count и т. Д.).Все это встроено в цикл для каждого.Например:

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, но это не могло решить и мою проблему.PS: я знаю, что простые вещи, такие как подсчет или сумма, могут быть выполнены довольно легко, но у меня есть некоторая сложная задача, и это всего лишь простой пример.

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Попробуйте это

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

А затем примените любую функцию, которую хотите.

0 голосов
/ 13 мая 2019

Трудно сказать, связана ли проблема с объединением фреймов данных или формы mySum(). Но вы можете попробовать:

myDf = (pd.concat(el.apply(lambda cols: mySum(cols)) 
                   for el in [df1,df2])
          .to_frame().T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...