熊猫,将函数应用于返回一对多行的数据框

时间:2019-07-17 13:22:16

标签: python pandas python-2.7 numpy

我有一个向其应用函数的熊猫数据框。但是,该函数为数据框中的一行返回许多项目。我想用该函数返回的值创建一个新的数据框。因此,到目前为止,当我应用该功能时,新数据框的行数与原始数据框的行数相同,而函数中的列表/系列为行。我在新数据框中需要的是从函数中返回的值作为列(扁平化列表)。另外,我想知道这是否是使用Pandas的好方法(就利用库的效率而言),还是仅坚持纯Python会更好?

这是我使用的:

def get_children(id):
    children = []
    suff = ['0', '1', '2', '3']
    for s in suff:
        children.append(id+s)

    return pd.Series(children)

df = pd.DataFrame()
df = all_attrbs['id'].apply(get_children)

输入:

all_attrbs:

id

0
1
2
3

预期输出:

df:

t_id

00
01
02
03
11
12
13
14
20
21
22
23
30
31
32
33

1 个答案:

答案 0 :(得分:2)

我不确定您的数据是什么样的,但是这是一种有效的方法:

df = pd.DataFrame({'id' : [0,1,2,3,4,5,6]})

flattened_list = ["{}_{}".format(x, i) for i in range(4) for x in df['id']]

df2 = pd.DataFrame(flattened_list)

输出flattened_list

['0_0',
 '1_0',
 '2_0',
 '3_0',
 '4_0',
 '5_0',
 '6_0',
 '0_1',
 '1_1',
 '2_1',
 '3_1',
 '4_1',
 '5_1',
 '6_1',
 '0_2',
 '1_2',
 '2_2',
 '3_2',
 '4_2',
 '5_2',
 '6_2',
 '0_3',
 '1_3',
 '2_3',
 '3_3',
 '4_3',
 '5_3',
 '6_3']