我有一系列numpy数组,并想从中创建一个dataframe列。具体来说,我有一个数据帧,看起来像这样:
In [298]: df = pd.DataFrame({'name': ['A','A','B','B'], 'value': [1,2,3,4]})
In [299]: df
Out[299]:
name value
0 A 1
1 A 2
2 B 3
3 B 4
我现在计算每个‘名称’的累积积分,如下所示:
In [300]: g = df.groupby('name')
In [301]: r = g.apply(lambda x: np.insert(integrate.cumtrapz(x.value), 0, [0]))
In [302]: r
Out[302]:
name
A [0.0, 1.5]
B [0.0, 3.5]
dtype: object
r的类型和r的元素为:
In [303]: type(r)
Out[303]: pandas.core.series.Series
In [304]: type(r[0])
Out[304]: numpy.ndarray
我想将此结果添加到原始数据帧中,以实现:
In [308]: df['cumint'] = np.append(r[0], r[1])
In [309]: df
Out[309]:
name value cumint
0 A 1 0.0
1 A 2 1.5
2 B 3 0.0
3 B 4 3.5
实现这个结果的最佳方法是什么。你知道吗
您的系列包含numpy数组,因此您可以concatenate将系列的元素放入一个长numpy数组中,并将新列设置为此数组:
结果:
您可以在这里使用
transform
而不是apply
来获得一系列结果:相关问题 更多 >
编程相关推荐