python - 根据其他数据框从数据框中选择值
问题描述
我尝试根据时间戳计算对象的位置。为此,我在熊猫中有两个数据框。一个用于测量数据,一个用于位置。所有的运动都是直接的加速。
数据框 1 包含测量数据:
ms force ... ... ...
1 5 20
2 10 20
3 15 25
4 20 30
5 25 20
..... (~ 6000 lines)
数据框 2 包含“定位数据”
ms speed (m/s)
1 0 0.66
2 4500 0.66
3 8000 1.3
4 16000 3.0
5 20000 3.0
.....(~300 lines)
现在我想用来自第二个数据帧的数据计算第一个数据帧的位置在 Excel 中我通过使用数组公式解决了这个问题,但现在我必须使用 Python/Pandas,我无法找到一种方法如何从中选择正确的行数据框 2。
我的想法是做这样的事情:如果
最后我想显示一个图表“强制<->方式”而不是“强制<->时间”
谢谢你
==================================================== ======================== 更新:与此同时,我几乎可以解决我的问题。现在我的数据看起来像这样:
数据帧 2(速度数据):
pos v a t t-end t-start
0 -3.000 0.666667 0.000000 4.500000 4.500000 0.000000
1 0.000 0.666667 0.187037 0.071287 4.571287 4.500000
2 0.048 0.680000 0.650794 0.010244 4.581531 4.571287
3 0.055 0.686667 0.205432 0.064904 4.646435 4.581531
...
15 0.055 0.686667 0.5 0.064904 23.0 20.0
...
28 0.055 0.686667 0.6 0.064904 35.0 34.0
...
30 0.055 0.686667 0.9 0.064904 44.0 39.0
和 Dataframe 1(基于时间的测量):
Fx Fy Fz abs_t expected output ('a' from DF1)
0 -13.9 170.3 45.0 0.005 0.000000
1 -14.1 151.6 38.2 0.010 0.000000
...
200 -14.1 131.4 30.4 20.015 0.5
...
300 -14.3 111.9 21.1 34.01 0.6
...
400 -14.5 95.6 13.2 40.025
所以我想检查来自 DF1 的时间(abs_t)并在 DF2 中搜索正确的“a”所以像这样(伪代码):
if (DF1['t_abs'] between (DF2['t-start'], DF2['t-end']):
DF1['a'] = DF2['a']
我可以制作两个 for 循环,但它看起来像错误的方式并且非常慢。
解决方案
我找到了一个非常慢的解决方案,但至少它可以工作:(
df1['a'] = 0
for index, row in df2.iterrows():
start = row['t-start']
end = row ['t-end']
a = row ['a']
df1.loc[(df1['tabs']>start)&(df1['tabs']<end), 'a'] = a
推荐阅读
- python - 在规则中的函数中使用通配符
- spring-kafka - 如何访问 SCDF 流中的源本机标头?
- pandas - 与首先选择列相比,对整个数据框进行分组,然后是过滤列是否占用更多内存?
- intellij-idea - IntelliJ - 前一天的提示
- rtmp - RTMP客户端什么时候发起deletestream()的操作
- datetime - 在 Azure 突触复制数据工具期间添加具有当前日期的附加列
- java - 如何在 ViewPage 中从 Activity 移动到 Fragment?未找到片段 ID 的视图
- javascript - 比较两个 Json 对象的值并找出使用 Java Script 的差异
- react-native - React Native 与 M1 芯片
- python - 如何从其他路径导入自己编写的python文件?