python - pandas 数据框的集成会产生一个长度不同的数组。如何将其存储在同一个数据框中?
问题描述
我有一个熊猫数据框,例如
x y
0 0 3
1 1 3
2 2 2
3 4 3
4 5 4
5 7 3
6 8 1
7 10 2
现在我想使用 .为每个数据点计算这些值的积分scipy.integrate.cumtrapz
。如果我跑
>>> cumtrapz(df.x,df.y)
array([ 0. , -1.5, 1.5, 6. , 0. , -15. , -6. ])
我得到了我想要的值,但我无法将它插入到数据框中:
>>> df["z"] = cumtrapz(df.x,df.y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/steen/.local/lib/python3.8/site-packages/pandas/core/frame.py", line 3044, in __setitem__
self._set_item(key, value)
File "/home/steen/.local/lib/python3.8/site-packages/pandas/core/frame.py", line 3120, in _set_item
value = self._sanitize_column(key, value)
File "/home/steen/.local/lib/python3.8/site-packages/pandas/core/frame.py", line 3768, in _sanitize_column
value = sanitize_index(value, self.index)
File "/home/steen/.local/lib/python3.8/site-packages/pandas/core/internals/construction.py", line 747, in sanitize_index
raise ValueError(
ValueError: Length of values (7) does not match length of index (8)
因为,如上所示,输出数组的长度比原始数据帧小一。
我该如何做到这一点?
解决方案
Scipy 文档在这里解决了这个问题:
引用:
初始:标量,可选
如果给定,则将此值用作返回结果中的第一个值。通常,该值应为 0。默认值为 None,这意味着没有返回 x[0] 处的值,并且 res 沿积分轴有一个小于 y 的元素。
例子:
cumtrapz(df.x,df.y, initial=0)
输出:
array([ 0. , 0. , -1.5, 1.5, 6. , 0. , -15. , -6. ])
推荐阅读
- uikit - 无法从 CoreML 模型部署中检索 MLModel
- c# - 按最旧和按 id 选择的 LINQ 查询
- java - 选择开始日期和出发日期的 xpath 不适用于 booking.com
- java - 泛型类型作为成员变量的函数
- html - 我正在尝试使用烧瓶和 html 创建一个下拉列表,但是有问题。有人可以帮我吗?
- r - R. Quanteda 软件包。如何过滤 dfm_tfidf 中存在的值?
- ios - 使用 .netrc 文件安装 Mapbox iOS SDK
- mysql - MySql How to Merge two columns in one column Such that second column ouput goes uder first column in multiple rows
- c# - 通过 C# code-403 错误阅读已使用 Microsoft-Graph-Api 创建的在线会议
- react-query - 一个一个地获取列表项