【问题标题】:iterating through different pandas dataframe names遍历不同的 pandas 数据框名称
【发布时间】:2019-01-24 00:00:06
【问题描述】:

我有 17 个名称相似的数据帧(df1、df2、df3...),并且希望能够编写一个 for 循环,对每个数据帧执行相同的操作。

    df1 = pd.read_csv("filename1")
    df2 = pd.read_csv("filename2")
    ...
    df17 = pd.read_csv("filename17")

    for i in range (1,17):
        "operations"

如何在 for 循环中遍历这些数据帧的名称?

【问题讨论】:

  • 将数据框放入列表或字典中,然后您可以像这样使用循环:for df in dfs: .... 我还建议您将文件名放入列表或其他数据结构中,这样您就可以循环读取数据帧时也可以使用它们。
  • 你可以做locals()['df{}'.format(i)]
  • @user3483203 你能把这个作为一个完整的答案吗?这将有助于不幸的人,例如像我这样的人 - 搜索过去 12 小时,找到有关如何将特定列的格式更改为 datetimedf['BillDate'] = pd.to_datetime(df['BillDate'] 的答案,其中 df 最终将被替换通过一系列数据框名称,例如在dflist = [df1, df2, ..., df17]

标签: python pandas


【解决方案1】:

您可以将它们作为评论中提到的 user3483203 放入列表中,然后我们使用 pd.concatkeys ,然后我们使用 groupby 来实现您的功能

l=[df1,df2...]
alldf=pd.concat(l,keys=list(range(len(l))))
allldf=alldf.groupby(level=0).apply('your function')

得到结果后我们可以使用groupby再次拆分数据框

[x for _,x in alldf.groupby(level=0)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2018-09-26
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2014-06-22
    相关资源
    最近更新 更多