使用for循环计算pandas中几个文件的长度

时间:2017-07-15 15:01:02

标签: python pandas

我有五个数据框(df1, df2, df3, df4, df5),我将使用以下代码计算它们的长度:

df1 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_1.xlsx")
df2 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_2.xlsx")
df3 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_3.xlsx")
df4 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_4.xlsx")
df5 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_5.xlsx")

for i in [1,2,3,4,5]:
    print(len(dfi.index))

但它会引发以下错误:

"name 'dfi' is not defined"

我也试过这个:

for i in [1,2,3,4,5]:
    print(len(df[i].index))

但那没用。

此代码有效:

print(len(df1.index))

但我每次都要更改文件的名称。

什么是问题,我该如何解决?

1 个答案:

答案 0 :(得分:3)

Python中没有动态变量名称 - 因此dfi指的是一个显式名为dfi的变量。它不会更改为df1只是因为i1(或其他内容)。

在您的情况下,您可以简单地迭代一系列数据帧:

df1 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_1.xlsx")
df2 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_2.xlsx")
df3 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_3.xlsx")
df4 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_4.xlsx")
df5 = pd.read_excel("/Users/us/Desktop/cymbalta_rated_5.xlsx")

for dfi in (df1, df2, df3, df4, df5):   # explicitly defines the variable "dfi"!
    print(len(dfi.index))