【发布时间】:2019-04-17 03:05:04
【问题描述】:
我有一个包含多个列的数据框,其中一些是列表。在对列表进行一些数据操作之后,我想在每一行上应用一个函数,该函数基本上将每一行扩展为 n 行(每行 n 更改)。
可以在这里看到一个简化的版本:
df = pd.DataFrame({'id':[0,1],'value':[[0,1,2],[3,4]]}).set_index('id')
def func(x):
v = np.array(x['value'])
return pd.Series([v,v**2],index=['value','value_2'])
我想要的输出是:
id value value_2
0 0 0 0
1 0 1 1
2 0 2 4
3 1 3 9
4 1 4 16
如果我应用该函数,我会得到一个与原始数据帧具有相同行数的输出,然后我需要对其进行整形:
df.apply(func,axis=1)
value value_2
id
0 [0, 1, 2] [0, 1, 4]
1 [3, 4] [9, 16]
有没有一种方法可以在应用函数后无需重新整形就可以得到想要的结果?
【问题讨论】:
-
value和value_2是否总是具有相同的维度?如果value的第三行有7个元素,是否意味着value_2的第三行也有7个元素? -
是的。它们总是具有相同的尺寸。