gpt4 book ai didi

python - 比较两个连续行并根据特定逻辑运算创建新列

转载 作者:行者123 更新时间:2023-11-30 22:17:29 26 4
gpt4 key购买 nike

我有一个包含两列的数据框

df = ['xPos', 'lineNum']   
import pandas as pd



data = '''\
xPos lineNum
40 1
50 1
75 1
90 1
42 2
75 2
110 2
45 3
70 3
95 3
125 3
38 4
56 4
74 4'''

我已经使用

为此创建了聚合数据框

aggrDF = df.describe(include='all')

命令

我对 xPos 值的最小值感兴趣。所以,我通过使用得到它

minxPos = aggrDF.ix['min']['xPos']  

所需输出

data = '''\
xPos lineNum xDiff
40 1 2
50 1 10
75 1 25
90 1 15
42 2 4
75 2 33
110 2 35
45 3 7
70 3 25
95 3 25
125 3 30
38 4 0
56 4 18
74 4 18'''

逻辑我想比较数据帧的两个连续行并根据此逻辑计算一个新列:

 if( df['LineNum'] != df['LineNum'].shift(1) ):
df['xDiff'] = df['xPos'] - minxPos
else:
df['xDiff'] = df['xPos'].shift(1)

本质上,我希望新列具有 df 中两个连续行的差异,只要行号相同即可。

如果行号发生变化,那么 xDiff 列应该与我从聚合数据帧中获得的最小 xPos 值存在差异。

你能帮忙吗?谢谢,

最佳答案

这两行应该可以做到:

df['xDiff'] = df.groupby('lineNum').diff()['xPos']

df.loc[df['xDiff'].isnull(), 'xDiff'] = df['xPos'] - minxPos

>>> df
xPos lineNum xDiff
0 40 1 2.0
1 50 1 10.0
2 75 1 25.0
3 90 1 15.0
4 42 2 4.0
5 75 2 33.0
6 110 2 35.0
7 45 3 7.0
8 70 3 25.0
9 95 3 25.0
10 125 3 30.0
11 38 4 0.0
12 56 4 18.0
13 74 4 18.0

关于python - 比较两个连续行并根据特定逻辑运算创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49641907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com