pandas 在循环中处理DataFrames,而不是追加DataFrames [关闭]

wbgh16ku  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
12小时前关门了
Improve this question
尝试在一个循环中连接所选的字符串,并始终将最后一个序列追加/连接/删除到df_final
我该怎么解决这个问题?

columns = ['Col1','Col2', 'Col3']
step_a = 1
step_b = 7
df_c = pd.DataFrame(columns=columns)
while step_b <= 601:
    service = df.columns[step_a]
    last_slash_index = service.rfind('/')
    last_dot_index = service.rfind('.')
    service = service[last_slash_index + 1:last_dot_index]

    df_selected = df.iloc[:,[0] + list(range(step_a, step_b))]
    df_b = df_selected.values
    df_b = pd.DataFrame(df_b, columns=None)
    df_b.columns = columns
    df_b['Service']= service 
    df_final = pd.concat([df_c, df_b],axis=0)
    step_a += 6
    step_b += 6

df_final.to_csv('table1-final.csv')

字符串

kadbb459

kadbb4591#

虽然你的问题不清楚,并将受益于一个可重复的例子,我相信你的问题是由于使用不同的名称为您的最终框架和中间的循环。
在这里,您只需覆盖上一步

df_final = pd.concat([df_c, df_b],axis=0)

字符串
只要在代码中使用df_c即可。
现在要注意,除非你真的需要中间层,否则在循环中使用concat是低效的。最好将你的数组收集在一个列表中,最后只运行concat一次:

columns = ['Col1','Col2', 'Col3']
step_a = 1
step_b = 7

lst = []                                                     # HERE

while step_b <= 601:
    service = df.columns[step_a]
    last_slash_index = service.rfind('/')
    last_dot_index = service.rfind('.')
    service = service[last_slash_index + 1:last_dot_index]

    df_selected = df.iloc[:,[0] + list(range(step_a, step_b))]
    df_b = df_selected.values
    df_b = pd.DataFrame(df_b, columns=None)
    df_b.columns = columns
    df_b['Service']= service 
    lst.append(df_b)                                         # HERE
    step_a += 6
    step_b += 6

df_final = pd.concat(lst, axis=0)

相关问题