hwo在python中将数据帧拆分为相等数量的子集

时间:2019-04-14 15:38:23

标签: python-3.x dataframe split

我有一个数据框

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

1 个答案:

答案 0 :(得分:1)

您可以使用iloc并遍历数据框,将每个新的数据框放入字典中以供以后调用。

dfs = {}
chunk = 4

按块大小遍历数据帧。创建df并添加到字典。

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