【问题标题】:Creating different dataframe and outputting it to different csv based on list of indexes根据索引列表创建不同的数据框并输出到不同的csv
【发布时间】:2020-03-11 23:56:02
【问题描述】:

我有一个基于 N 值的索引列表,如下所示。这是我用来创建索引列表的代码

df = pd.DataFrame(np.arange(100).reshape((-1, 5)))
N = 4
ix = [[i, i+N] for i in range(0,len(df),N)]
ix
# [[0, 4], [4, 8], [8, 12], [12, 16], [16, 20]]

我想创建创建函数:

1) N 个数据帧(df_1、df_2、df_3、df_4、df_5)。每个数据帧中的行基于每个索引列表。例如,“df_1”将包含主数据帧 df 中索引 0 和 4 之间的所有行,类似地,df_2 将包含数据帧 df 中索引 4 和 8 之间的所有行

2) 将每个数据帧输出到 csv 为 df_1.csv, df_2.csv ....

以下是我尝试过的代码,但“df_i = df.ix[i]”步骤仅获取列表中的行而不是列表中的范围:

def write(df, ix):
    for i in ix:
        try:
            df_i = df.ix[i]
            df_i.to_csv("a.csv", index = false)
        except:
            pass

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    您可以使用iloc

    def write(df, ix):
        c = 1
        for i in ix:
            try:
                df_i = df.iloc[i[0]:i[1]] # use iloc
                df_i.to_csv(f"df_{str(c)}.csv", index=False) # f-strings to name file
                c+=1 # update your counter
            except:
                pass
    
    df = pd.DataFrame(np.arange(100).reshape((-1, 5)))
    N = 5
    ix = [(i, i+N) for i in range(0,len(df),N)]
    
    write(df, ix)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多