gpt4 book ai didi

python - 转置和扩展数据

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:22 25 4
gpt4 key购买 nike

我有以下数据框:

id     begcost     endcost
100 1 3
200 10 12

我要:

id      newcost
100 1
100 2
100 3
200 10
200 11
200 12

基本上,我需要为 begcost 和 endcost 列范围内包含的每个值创建一个新行。尝试了多种转置选项,但似乎无法找到我需要的 TIA。

最佳答案

pd.DataFrame(
[(i, j) for i, b, e in df.itertuples(index=False) for j in range(b, e + 1)],
columns=['id', 'newcost']
)

id newcost
0 100 1
1 100 2
2 100 3
3 200 10
4 200 11
5 200 12

时间

%%timeit
(df.set_index('id').apply(lambda x: pd.Series(np.arange(x.iloc[0],x.iloc[1]+1)), axis=1)
.reset_index()
.melt(id_vars='id')
.drop('variable', axis=1)
.rename(columns={'value':'newcost'}))
100 loops, best of 3: 3.03 ms per loop

%%timeit
pd.DataFrame(
[(i, j) for i, b, e in df.itertuples(index=False) for j in range(b, e + 1)],
columns=['id', 'newcost']
)

1000 loops, best of 3: 1.01 ms per loop

关于python - 转置和扩展数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314963/

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