Python 使用循环将数据帧数据分配给数据帧标签
我有一个数据帧名称列表,我想将不同的数据帧数据分配给这些名称Python 使用循环将数据帧数据分配给数据帧标签,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧名称列表,我想将不同的数据帧数据分配给这些名称 filenames =[] for i in np.arange(1,7): a = "C:\Users\...........\Python code\Cp error for MPE MR%s.csv" %(i) filenames.append(a) dfs =[df1,df2,df3,df4,df5,df6] for i, j in enumerate(filenames): dfs[j]= pd
filenames =[]
for i in np.arange(1,7):
a = "C:\Users\...........\Python code\Cp error for MPE MR%s.csv" %(i)
filenames.append(a)
dfs =[df1,df2,df3,df4,df5,df6]
for i, j in enumerate(filenames):
dfs[j]= pd.DataFrame.from_csv(i,header=0, index_col=None)
但是,出现以下错误代码:
NameError: name 'df1' is not defined
我定义值列表的方式是否有问题?为什么列表中的值不能指定为变量
如何将以下代码放入循环中
df1 = pd.DataFrame.from_csv(filenames[0],header=0, index_col=None)
df2 = pd.DataFrame.from_csv(filenames[1],header=0, index_col=None)
df3 = pd.DataFrame.from_csv(filenames[2],header=0, index_col=None)
df4 = pd.DataFrame.from_csv(filenames[3],header=0, index_col=None)
df5 = pd.DataFrame.from_csv(filenames[4],header=0, index_col=None)
df6 = pd.DataFrame.from_csv(filenames[5],header=0, index_col=None)
似乎您需要听写理解,列出文件的一种可能方法是使用: 示例文件: 如果每个文件中有相同的列,可以通过以下方式创建一个大的
df
:
编辑:更好的方法是使用以下数据帧: 具有全局变量的解决方案:
#for df0, df1, df2...
for i, fp in enumerate(files):
print (fp)
df = pd.read_csv(fp, header=0, index_col=None)
globals()['df' + str(i)] = df
print (df1)
a b c d
0 0 9 6 5
1 1 6 4 2
数据帧列表和按位置选择的更好解决方案:
#for dfs[0], dfs[1], dfs[2]...
dfs = [pd.read_csv(fp, header=0, index_col=None) for fp in files]
print (dfs[1])
a b c d
0 0 9 6 5
1 1 6 4 2
似乎您需要听写理解,列出文件的一种可能方法是使用: 示例文件: 如果每个文件中有相同的列,可以通过以下方式创建一个大的
df
:
编辑:更好的方法是使用以下数据帧: 具有全局变量的解决方案:
#for df0, df1, df2...
for i, fp in enumerate(files):
print (fp)
df = pd.read_csv(fp, header=0, index_col=None)
globals()['df' + str(i)] = df
print (df1)
a b c d
0 0 9 6 5
1 1 6 4 2
数据帧列表和按位置选择的更好解决方案:
#for dfs[0], dfs[1], dfs[2]...
dfs = [pd.read_csv(fp, header=0, index_col=None) for fp in files]
print (dfs[1])
a b c d
0 0 9 6 5
1 1 6 4 2
为什么是这根绳子?为什么不应该是:
dfs =[]
是的,我想你交换了I和j,应该是这样的:
dfs.append(pd.DataFrame.from_csv(j,header=0, index_col=None))
枚举是多余的:
for f in filenames:
dfs.append(pd.DataFrame.from_csv(f,header=0, index_col=None))
为什么是这根绳子?为什么不应该是:
dfs =[]
是的,我想你交换了I和j,应该是这样的:
dfs.append(pd.DataFrame.from_csv(j,header=0, index_col=None))
枚举是多余的:
for f in filenames:
dfs.append(pd.DataFrame.from_csv(f,header=0, index_col=None))
你不想交换
i
和j
吗?(假设您的意思是enumerate
而不是iterate
)什么是iterate
?对不起,应该是枚举的。您不想交换i
和j
吗?(假设您的意思是enumerate
而不是iterate
)什么是iterate
?对不起,应该是枚举的,但是我无法使用此方法编辑数据帧属性?我想是的。您有两个可能的选项-从所有文件创建一个大的df
,或者创建df的dict。或者。。。我可以单独做。。df1=pd.DataFrame.from_csv(filenames[0],header=0,index_col=None)用于文件名范围(1,6),但我无法使用此方法编辑数据帧属性?我想是的。您有两个可能的选项-从所有文件创建一个大的df
,或者创建df的dict。或者。。。我可以单独做。。文件名范围(1,6)的df1=pd.DataFrame.from_csv(文件名[0],头=0,索引_col=None)