我的目标是将n
条记录分组为4,例如:
0-3
4-7
8-11
etc.
根据其他列中的一列查找每组4的max()
值,并创建新数据集或csv文件。 max()
操作将在一列上执行,而其他列保持不变。
根据我在这里所做的研究(Stackoverflow),我尝试在我的数据集上自定义并应用此网站上的以下解决方案,但它并没有给我我的期望:
# Group by every 4 row until the len(dataset)
groups = dataset.groupby(pd.cut(dataset.index, range(0,len(dataset),3))
needataset = groups.max()
我得到的结果类似于以下内容:
Column 1 Column 2 ... Column n
0. (0,3]
1. (3,6]
max()
操作的目标列也未产生预期结果。
我将非常感谢您解决问题的任何指南。
答案 0 :(得分:0)
这个例子可以帮到你。在这里,我使用步骤5创建0到100之间的一些随机值的DataFrame
,并将这些值分组为4(sort_values
非常重要,它会让您的生活更轻松)
df = pd.DataFrame({'value': np.random.randint(0, 100, 5)})
df = df.sort_values(by='value')
labels = ["{0} - {1}".format(i, i + 4) for i in range(0, 100, 5)]
df['group'] = pd.cut(df.value, range(0, 105, 5), right=False, labels=labels)
groups = df["group"].unique()
然后我创建一个最大值的数组
max_vals = np.zeros((len(groups)))
for i, group in enumerate(groups):
max_vals[i] = max(df[df["group"] == group]["value"])
然后从这些最大值中DataFrame
pd.DataFrame({"group": groups, "max value": max_vals})