Python Pandas 数据合并

Python Pandas data binning

对于任何不清楚的地方深表歉意...我是新来这里发帖的....

我正在使用 pandas 处理数据框,非常感谢社区的任何意见。这是数据框的样子……请看这里的截图

screenshot of the data frame structure

我的目标是创建一个独立的数据框,根据 5 的 T 增量分别将 x 和 y 平均到 bin 中......

例如……对于0-5范围内的T =>平均对应的x,y值到x1bin,y1bin,然后对于5-10范围内的T =>平均对应的x,y值到x2bin,y2bin ........for T in range 10-15 => average corresponding x, y values into x3bin, y3bin .........and increment this all the way to T in tan135-140.同时将数据索引到ID…。意味着将属于ID的数据保留为ID 1。您可能已经注意到,会有一些带有 NAN 值的 bin,因为有相应的 T,这很好......

最后,知道我计算T的方法可能会有所帮助……它恰好是每个ID的A滚动时间……。并且每个新ID都从0开始

df['T'] = df.groupby(['ID']).A.apply(lambda x: x - x.iloc[0]) / np.timedelta64( 1、'm')

提前谢谢你……

假设 df 是你的数据框

t_range = 5
t_ranges = np.arange(0,df['T'].max()+1,t_range)
new_df = pd.DataFrame(columns=['t_range','x_avg','y_avg'])
for i in range(1,len(t_ranges)):
    a = df[df['T']>=t_ranges[i-1]][df['T']<t_ranges[i]]
    x_avg = a['X'].mean()
    y_avg = a['Y'].mean()
    new_df = new_df.append({'t_range':t_range[i],'x_avg':x_avg,'y_avg:y_avg},ignore_index=True)

样本数据 df

    T   X   Y
0   1   2   3
1   2   3   4
2   3   4   5
3   4   5   6
4   5   6   7
5   6   7   8
6   7   8   9
7   8   9   1

使用 t_range = 2

即 0-2,2-4,4-6

样本输出new_df

     t_range  x_avg  y_avg
0      2.0    2.5    3.5
1      4.0    4.5    5.5
2      6.0    6.5    7.5

编辑: 如下所示更改 x_avg 和 y_avg,它们将忽略数据中存在的任何 NaN,t_range = 2 used

 x_avg = a['X'].dropna().mean()
 y_avg = a['Y'].dropna().mean()

示例数据

    T   X    Y
 0  1   2.0  6.0
 ---------------- t<2
 1  2   NaN  NaN
 2  3   7.0  8.0
 ----------------  t<4 and t>=2
 3  4   10.0 11.0
 4  5   NaN  14.0
 ----------------  t<6 and t>=4
 5  6   1.0  NaN
 6  7   12.0 13.0
 ----------------   t<8 and t>=6
 7  8   1.0  2.0

输出

    t_range x_avg   y_avg
0   2.0      2.0    6.0
1   4.0      7.0    8.0
2   6.0     10.0    12.5
3   8.0      6.5    13.0

我希望这能回答您在评论中提出的第二个问题。如果您发现答案有帮助,请点击此答案旁边的刻度标记将其标记为已接受