首页 > 解决方案 > 如何创建基于另一个数据框的值命名的多个数据框?

问题描述

我有一个包含大约 250 万行的数据框,并希望将其拆分为大约 10000 行(一个用于TICKER的每个唯一值),并为 i 的每个值命名为 df(i)。

例如,对于以下数据框

df = pd.DataFrame({"ticker": ["A", "A", "BB", "BB", "CCC", "CCC", "A"],
  "date": ["04-30-2020", "07-30-2020", "05-31-2020", "08-31-2020", "06-30-2020", "09-30-2020", "10-31-2020"],
"assets": ["40","50","60","70","80","90","100"]})

我想要一个执行以下操作的循环:对于每个 i (i=ticker 的唯一值) dfi=df(df.ticker==i)

例如,如果第 i 个值为 CCC:

dfCCC=df(df.ticker='CCC')
print(dfCCC)
      ticker       date        assets 
0      CCC       06-30-2020      80 
1      CCC       09-30-2020      90

这可能吗?如果可以,怎么做?

谢谢你的时间。

标签: pythonpandasdataframe

解决方案


我觉得你需要这个

将熊猫导入为 pd

df = pd.DataFrame({"ticker": ["A", "A", "BB", "BB", "CCC", "CCC", "A"], "date": ["04-30 -2020”、“07-30-2020”、“05-31-2020”、“08-31-2020”、“06-30-2020”、“09-30-2020”、“10-31-2020” "], "资产": ["40","50","60","70","80","90","100"]})

导入系统

这个模块 = sys.modules [名称]

ls = df.ticker.unique().tolist()

对于 ls 中的 i:setattr(thismodule, "df"+i, df[df.ticker==i])

显示(dfA,dfBB,dfCCC)

输出

multiple_dfs_with_random_names

笔记:

  • 如果您需要在循环中引用这些 df 名称,请使用以下内容:

对于 ls 中的 i: print(eval("df"+i))

  • 名称两边用双下划线括起来(下划线下划线名称下划线下划线)

推荐阅读