首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列中查找另一列的函数中的值

在列中查找另一列的函数中的值
EN

Stack Overflow用户
提问于 2020-06-08 09:37:54
回答 2查看 88关注 0票数 3

假设值存在,例如,如何在dataframe中创建另一列" testFinal“,其中df"test"-”df“测试的绝对值为”例如,testFinal的第一个值是2与-> so 8后0.2秒差值的绝对值“,结果是abs(2-8) =6。

我的目标是计算"testFinal“

我不知道是否清楚,下面是一个例子

注:时间戳不是均匀的,因此两个值之间的间隔可能随时间不同而不同。

非常感谢

以下是dataframe的代码

代码语言:javascript
运行
复制
df = pd.DataFrame({'Timestamp':[11.1,11.2,11.3,11.4,11.5,11.6,11.7,11.8,11.9,12.0,12.10],
                   'test':[2,22,8,4,5,4,5,3,54,23,89],
                   'testFinal':[6,18,3,0,0,1,49,20,35,np.NaN,np.NaN]})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-08 10:09:33

首先,通过使用tempTimestamp列转换为timedelta获得一个新的临时列,然后将该temp列设置为dataframe index,然后创建一个新的列testFinal,其值作为这个新的索引+ 0.2 seconds,然后使用Series.maptestFinal列映射到来自df['test']列的值,因此现在testFinal列中的值应该与testD13中的值相对应,然后您可以在testFinal和列中减去这些值以获得所需的结果:

代码语言:javascript
运行
复制
df['temp'] = pd.to_timedelta(df['Timestamp'], unit='s')
df = df.set_index('temp')

df['testFinal'] = df.index + pd.Timedelta(seconds=0.2)
df['testFinal'] = df['testFinal'].map(df['test']).sub(df['test']).abs()

df = df.reset_index(drop=True)

代码语言:javascript
运行
复制
# print(df)
    Timestamp  test  testFinal
0        11.1     2        6.0
1        11.2    22       18.0
2        11.3     8        3.0
3        11.4     4        0.0
4        11.5     5        0.0
5        11.6     4        1.0
6        11.7     5       49.0
7        11.8     3       20.0
8        11.9    54       35.0
9        12.0    23        NaN
10       12.1    89        NaN
票数 2
EN

Stack Overflow用户

发布于 2020-06-08 10:15:59

可以使用numpy,如下所示。我创建了一个新列test_final,以便与预期的testFinal列进行比较。

代码语言:javascript
运行
复制
import numpy as np

test = df.test.values
df['test_final'] = np.abs(test - np.concatenate((test[2:], np.array([np.nan]*2)), axis=0))
print(df)

输出

代码语言:javascript
运行
复制
    Timestamp  test  testFinal  test_final
0        11.1     2        6.0         6.0
1        11.2    22       18.0        18.0
2        11.3     8        3.0         3.0
3        11.4     4        0.0         0.0
4        11.5     5        0.0         0.0
5        11.6     4        1.0         1.0
6        11.7     5       49.0        49.0
7        11.8     3       20.0        20.0
8        11.9    54       35.0        35.0
9        12.0    23        NaN         NaN
10       12.1    89        NaN         NaN
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62259143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档