我有一个数据框,其中包含一整套数据和相关的ID信息:
| sample_id | run_id | x | y | z |
| 0 | 1 | 1 | 2 | 3 |
| 0 | 2 | 4 | 5 | 6 |
| 1 | 1 | 1 | 2 | 3 |
| 1 | 2 | 7 | 8 | 9 |
我希望基于此结果创建一个数据框。因此,一个简单的示例是我的新数据框应包含一行,其中包含来自示例运行的平均信息:
| sample_id | avg_x | avg_y | avg_z |
| 0 | 2.5 | 3.5 | 4.5 |
| 1 | 4 | 5 | 6 |
此刻,我通过循环进行此操作:
pivots = []
for i in samples:
df_sample = df_samples[df_samples['sample_id'] == i]
pivot = df_sample.pivot_table(index=index, columns='run_id', values=[x, y, z], aggfunc='mean')
# Add some other features. Involves creating more columns than existed in the initial df_samples dataframe
pivots.append(pivot)
# create new dataframe
pd.concat(pivots)
因此,我的第一个问题是,是否要创建一个由另一个数据框的重复数据点组成的新数据框。有没有一种方法可以用一个数据透视表命令一次完成所有操作,而不必反复调用呢?如果有的话,它表现得更好吗?
我的第二个问题涉及更复杂的情况。如果有可能一次执行多个枢轴以建立新数据框,而新数据框也将增加其尺寸,即
| s_id | avg_x | avg_y | avg_z | new_feature_1 |new_feature_2 |
| 0 | 2.5 | 3.5 | 4.5 | f(x11, x12, y11, y12, z11, z12) | g(avg_x1, avg_x2, avg_y1, avg_y2, avg_z1, avg_z2) |
| 1 | 4 | 5 | 6 | f(x21, x22, y21, y22, z21, z22) | g(avg_x1, avg_x2, avg_y1, avg_y2, avg_z1, avg_z2) |
这些函数实质上是对每个sample_id的数据执行单独的操作以创建新功能。
此外:我正在寻找有关处理大熊猫数据框和Performantley构造新的或执行查询的良好资源。我几乎总是能够使用熊猫获得想要的结果。我的实现通常效率不高,类似于在较低级别的语言(如c ++)中如何实现。我想提高我的工作知识,也许这涉及到一些我不了解的关于数据框和表等的理论。对资源的建议会很好。请注意,这仅是附加的有用信息,仅推荐一项并不能回答问题,无论有没有资源推荐,都可以接受以上两个用例的回答。