gpt4 book ai didi

python - Pandas DataFrame 自连接 Key1 == Key1 和 Key2 +1 == Key2

转载 作者:行者123 更新时间:2023-12-01 04:01:13 26 4
gpt4 key购买 nike

有没有办法在 pandas.merge() 期间更改 key ?

我正在尝试加入data其自身 left.person == right.personleft.record +1 == right.record ,这样我就可以用日期时间差 right.date - left.date 填充增量。 .

我正在使用 Python 3.5.1 | IPython 4.1.2 | Anaconda custom (64-bit) | Windows 7

In[38]: data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11185856 entries, 0 to 11185855
Data columns (total 4 columns):
person int64
record int64
date datetime64[ns]
delta datetime64[ns]
dtypes: datetime64[ns](2), int64(2)
memory usage: 341.4 MB

In[39]: data.head(5)
Out[37]:
person record date delta
0 1 1 2015-08-01 NaT
1 1 2 2015-10-18 NaT
2 1 3 2016-02-06 NaT
3 2 1 2015-04-18 NaT
4 2 2 2015-07-11 NaT

这对于 SQL 中的我来说是微不足道的,但是在阅读了有关合并和串联的 pandas-docs 页面后,我仍然不明白。

最佳答案

解决这个问题肯定有很多方法。一种方法(如果有点笨拙)是创建一个新列并合并到该列上,即:

df.loc[:,'RecordOffset'] = df.record + 1
df = df.merge(df, left_on = ['person', 'record'], right_on = ['person', 'RecordOffset'], how = 'left')

执行此操作的另一种方法可能是枢轴,例如:

import datetime
df = pd.DataFrame({'person':[1,1,1,2,2,3,3,3],
'record':[1,2,3,1,2,1,2,3],
'date' : [datetime.date(2015, 8, i) for i in range(1,9 )]})

df.pivot('person', 'record', 'date')

产量:

record           1           2           3
person
1 2015-08-01 2015-08-02 2015-08-03
2 2015-08-04 2015-08-05 NaN
3 2015-08-06 2015-08-07 2015-08-08

关于python - Pandas DataFrame 自连接 Key1 == Key1 和 Key2 +1 == Key2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36462828/

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