python-3.x - 如何在python中将数据帧拆分为相等数量的子集
问题描述
我有一个数据框
import pandas as pd
d = {'user': [1, 1, 2,2,2,2 ,2,2,2,2], 'friends':
[1,2,1,5,4,6,7,20,9,7]}
df = pd.DataFrame(data=d)
我尝试在一个循环中将其df
分成几部分。n
例如,对于n=3
n=3
for i in range(3):
subdata = dosomething(df)
print(subdata)
输出将类似于
# first loop
user friends
0 1 1
1 1 2
2 2 1
3 2 5
# second loop
user friends
0 2 4
1 2 6
2 2 7
3 2 20
#third loop
user friends
0 2 9
1 2 7
解决方案
您可以使用 iloc 并循环遍历数据帧,将每个新数据帧放入字典中以便稍后调用。
dfs = {}
chunk = 4
按块大小循环遍历数据帧。创建df并添加到dict。
for n in range((df.shape[0] // chunk + 1)):
df_temp = df.iloc[n*chunk:(n+1)*chunk]
df_temp = df_temp.reset_index(drop=True)
dfs[n] = df_temp
将此 if 语句用于末尾的任何剩余行。
if df.shape[0] % chunk != 0:
df_temp = df.iloc[-int(df.shape[0] % chunk):]
df_temp = df_temp.reset_index(drop=True)
dfs[n] = df_temp
else:
pass
访问字典中的数据框。
print(dfs[0])
user friends
0 1 1
1 1 2
2 2 1
3 2 5
print(dfs[1])
user friends
0 2 4
1 2 6
2 2 7
3 2 20
print(dfs[2])
user friends
0 2 9
1 2 7
推荐阅读
- objective-c - 在 Kotlin 中快速枚举 w Objective-C typedef
- python - dynamic_rnn 中的初始状态作为占位符
- java - 如何成功循环这个 I/O 程序?
- react-native - React Native:FlatList with require Images 不高效
- c# - ASP.NET Core Razor 页面锚标记在区域内不起作用
- jquery - jQuery 悬停效果 - 如何让它变慢
- java - 如何使用 JOGL 处理和返回数组
- reactjs - 在 reactjs 中输入 3 个值时如何自动关注美元值?
- c# - 全局变量改变另一个类的值(C#)
- javascript - JavaScript - 添加 ID 和类