gpt4 book ai didi

python - Pandas 箱数据框

转载 作者:太空狗 更新时间:2023-10-30 02:07:18 25 4
gpt4 key购买 nike

我有一个带有 0.1 m 网格的深度列的数据框。

import pandas as pd


df1 = pd.DataFrame({'depth': [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1 ],
'350': [7.898167, 6.912074, 6.049002, 5.000357, 4.072320, 3.070662, 2.560458, 2.218879, 1.892131, 1.588389, 1.573693],
'351': [8.094912, 7.090584, 6.221289, 5.154516, 4.211746, 3.217615, 2.670147, 2.305846, 1.952723, 1.641423, 1.622722],
'352': [8.291657, 7.269095, 6.393576, 5.308674, 4.351173, 3.364569, 2.779837, 2.392813, 2.013316, 1.694456, 1.671752],
'353': [8.421007, 7.374317, 6.496641, 5.403691, 4.439815, 3.412494, 2.840625, 2.443868, 2.069017, 1.748445, 1.718081 ],
'354': [8.535562, 7.463452, 6.584512, 5.485725, 4.517310, 3.438680, 2.890678, 2.487039, 2.123644, 1.802643, 1.763818 ],
'355': [8.650118, 7.552586, 6.672383, 4.517310, 4.594806, 3.464867, 2.940732, 2.530211, 2.178271, 1.856841, 1.809555 ]},
index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
)

我的问题是:如何对数据进行分箱以获取 0.5 米深度频率的新数据帧?

或者更确切地说,如何对 dz=0.5 m bin 的 df1(每个 0.1 m 有数据)的列值进行平均?

关键是要获得相同的 df 结构,相同的列 (350-355),但是对于特定的 dz 间隔(行数),每列的行应该平均/分箱,比方说 0.5 m

所以在这种情况下,我的新数据框只有两行,深度值为 1.35 和 1.85 m,每一列都与 df1 中的一样。第一个将具有 1.1-1.6m 间隔的平均值,第二个将具有 1.6-2.1 m 间隔的平均值。

最佳答案

使用 df.groupby 的组合和 pd.cut

import pandas as pd
import numpy as np

# Specifiy your desired dz step size
step = 0.5
dz = np.arange(1,3,step)

# rebin dataframe
df2 = df1.groupby(pd.cut(df1.depth, dz, labels=False), as_index=False).mean()

# refill 'depth' column
df2.depth = dz[:-1]

给予

depth   350     351     352     353     354     355
0 1.0 5.986384 6.154609 6.322835 6.427094 6.517312 6.397441
1 1.5 2.266104 2.357551 2.448998 2.502890 2.548537 2.594184
2 2.0 1.573693 1.622722 1.671752 1.718081 1.763818 1.809555

每行中有 35x 的平均值1 < x <= 1.5 内的列, 1.5 < x <= 2等等……

您可以通过为 step 选择所需的值轻松更改重新装箱。变量。

关于python - Pandas 箱数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52404597/

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