我有一个向其应用函数的熊猫数据框。但是,该函数为数据框中的一行返回许多项目。我想用该函数返回的值创建一个新的数据框。因此,到目前为止,当我应用该功能时,新数据框的行数与原始数据框的行数相同,而函数中的列表/系列为行。我在新数据框中需要的是从函数中返回的值作为列(扁平化列表)。另外,我想知道这是否是使用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
答案 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']