我正在处理许多数据框,因此需要以相同的方式更新所有这些数据框。我认为循环执行此操作要比为每个更改编写唯一的行要容易。但是我无法更新数据框。
这是我尝试过的(但不起作用)
pd1=pd.read_csv('data1.csv')
pd2=pd.read_csv('data2.csv')
samples = [pd1,pd2]
for i, df in enumerate(samples):
samples[i] = samples[i].truncate(after=99, axis="rows")
有什么想法如何以适当的方式更新更改或遍历数据框?
答案 0 :(得分:0)
这会覆盖文件,因此,如果要保留原始文件,则需要另存为其他文件名,例如:
pd.read_csv(file, nrows=100).to_csv('trunc_'+ file, index=False)
但是您可以遍历:
import pandas as pd
filenames = ['data1.csv','data2.csv']
for file in filenames:
pd.read_csv(file, nrows=100).to_csv(file, index=False)
答案 1 :(得分:0)
假设2个dfs为:
print(df1)
col1 col2 col3 col4
0 1 2 A S
1 3 4 A P
2 5 6 B R
3 7 8 B B
print(df2)
col5 col6 col3
0 9 10 A
1 11 12 R
您可以将字典更新并存储为:
samples = [df1,df2]
frames={}
for e,i in enumerate(samples):
frames.update([('df'+str(e+1), i.truncate(after=2, axis="rows"))])
print(frames)
{'df1': col1 col2 col3 col4
0 1 2 A S
1 3 4 A P
2 5 6 B R, 'df2': col5 col6 col3
0 9 10 A
1 11 12 R}
现在只需调用密钥即可获取数据框:
print(frames['df1'])
col1 col2 col3 col4
0 1 2 A S
1 3 4 A P
2 5 6 B R