我的csv很大,想将其分成4个部分,并在循环中生成名称,例如sub0,sub1,sub2,sub3。我可以按如下常规进行拆分:
df=pd.DataFrame(np.random.randint(0,100,size=(20, 3)), columns=list('ABC'))
for i,chunk in enumerate(np.array_split(df, 4)):
print(chunk.head(2)) #just to check
print(chunk.tail(1)) #just to check
sub+str(i)=chunk.copy() # this gives error
但是在最后一行分配名称的情况下,出现了 expected 错误:SyntaxError:无法分配给运算符。
问:如何通过复制循环中的每个块来获取sub0,..,sub3?谢谢!答案 0 :(得分:1)
为什么要在循环中创建变量?
使用列表要容易得多:
subs = []
for chunk in np.array_split(df, 10):
print(chunk.head(2)) #just to check
print(chunk.tail(1)) #just to check
subs.append(chuck.copy())
答案 1 :(得分:1)
最好的方法是使用动态名称作为键来创建dict
:
chunks = {f'{sub}{i}':chunk for i, chunk in enumerate(np.array_split(df, 10))}
如果您绝对坚持将框架作为单独的变量创建,则可以将其分配给globals()
字典,但是建议不使用此方法:
for i, chunk in enumerate(np.array_split(df, 10)):
globals()['{}{}'.format(sub, i)] = chunk