【问题标题】:how to split dataframe into equal number of subset in python如何在python中将数据帧拆分为相等数量的子集
【发布时间】:2019-04-14 15:38:22
【问题描述】:

我有一个数据框

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

【问题讨论】:

    标签: python-3.x dataframe split


    【解决方案1】:

    您可以使用 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
    

    【讨论】:

      猜你喜欢
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多