gpt4 book ai didi

python - 如何加入独立的数据框并进入 Pandas ?

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:05 24 4
gpt4 key购买 nike

实现此目标的最佳方法是什么:

test = pd.DataFrame([2,3,4])
test1 = test.copy()
test2 = test.copy()
test1['start'] = 2017
test1['end'] = 2018
test2['start'] = 2018
test2['end'] = 2019
test = pd.concat([test1, test2])

结果如下:

        0   start   end
0 2 2017 2018
1 3 2017 2018
2 4 2017 2018
0 2 2018 2019
1 3 2018 2019
2 4 2018 2019

I think there will be a more elegant way ;)

更新(全图):

DataFrame1 列:id、year、valueDataFrame2 列:开始、结束

结果:ID、开始、结束、DataFrame1 中每个 id 的平均值以及 DataFrame2 的每个开始/结束组合

data:

id year value
1 2016 -0,232
1 2017 -0,432
1 2018 -0,532
1 2019 -0,632
1 2020 -0,682
2 2016 0,768
2 2017 0,568
2 2018 0,468
2 2019 0,368
2 2020 0,318
2 2021 0,268

start end
2017 2018
2017 2019
2018 2019

结果:

id  start   end avg_value
1 2017 2018 -0,48
1 2017 2019 -0,53
1 2018 2019 -0,58
2 2017 2018 0,52
2 2017 2019 0,47
2 2018 2019 0,42

最初的问题是建立结果数据框(作为没有 avg_value 的第一步)。它应该计算开始和结束“包括”的年份内的平均值。

最佳答案

先使用交叉连接,再使用自定义函数:

df1['value'] = df1['value'].replace(',','.', regex=True).astype(float)

def f(x):
return df1.loc[df1['year'].between(x['start'], x['end']) &
(df1['id'] == x['id']), 'value'].mean()

df = (pd.merge(df1[['id']].drop_duplicates().assign(a=1), df2.assign(a=1), on='a')
.drop('a',1))
df['avg_value'] = df.apply(f, axis=1)
print (df)
id start end avg_value
0 1 2017 2018 -0.482
1 1 2017 2019 -0.532
2 1 2018 2019 -0.582
3 2 2017 2018 0.518
4 2 2017 2019 0.468
5 2 2018 2019 0.418

关于python - 如何加入独立的数据框并进入 Pandas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47619735/

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