如何将数据框合并到另一个从pandas python中的第一个数据框的产品创建的数据框中?

时间:2016-11-21 18:58:19

标签: python pandas dataframe

我有一个带有A,B列的数据帧然后我有函数foo(B)从第一个数据帧中取出参数B,返回的行数基于B的值,

import pandas as pd
import numpy as np
x = pd.DataFrame.from_items([('A', [1,1, 2, 3]), ('B', [4,3, 5, 6])])
def foo(B):
    sX = pd.Series(np.random.randn(B))
    sY = pd.Series(np.random.randn(B))
    return pd.DataFrame.from_items([('X', sX.tolist()), ('Y', sY.tolist())])
foo(4)
foo(3)

我最终想要创建一个合并两个表的新数据框。

enter image description here ;;;;;; enter image description here

我希望我的输出如下所示......  enter image description here

2 个答案:

答案 0 :(得分:1)

按列xA对数据框B进行分组,然后使用apply方法为每个组生成数据框:

(x.groupby(['A', 'B']).apply(lambda g: foo(g.B))
  .reset_index(level=2, drop=True).reset_index())

enter image description here

答案 1 :(得分:0)

x = pd.DataFrame.from_items([('A', [1,1, 2, 3]), ('B', [4,3, 5, 6])])

def foo(B):
    df = pd.DataFrame(np.random.randn(B,2), columns=['X','Y'])
    df['tmp'] = B
    return df

x.merge(pd.concat([foo(4), foo(3)]), left_on='B', right_on='tmp', how='left').drop('tmp',1)