如何创建基于另一个数据帧的值命名的多个数据帧?

2024-10-02 14:28:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大约有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=股票代码的唯一值) 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

这可能吗?如果可能,将如何实现

谢谢你抽出时间


Tags: 数据名称dataframedfdate命名pd股票代码
2条回答

我想你需要这个

作为pd进口熊猫

df=pd.DataFrame({“ticker”:[“A”、“A”、“BB”、“BB”、“CCC”、“CCC”、“A”], “日期”:[“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”])

导入系统

thismodule=sys.modules[名称]

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

对于ls中的i: setattr(此模块,“df”+i,df[df.ticker==i])

显示器(dfA、dfBB、dfCCC)

输出

multiple_dfs_with_random_names

注:

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

对于ls中的i: 打印(评估(“df”+i))

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

是的,您可以使用groupby

for k,d in df.groupby('ticker'):
    print(d)
    print('-'*30)

输出:

  ticker        date assets
0      A  04-30-2020     40
1      A  07-30-2020     50
6      A  10-31-2020    100
               
  ticker        date assets
2     BB  05-31-2020     60
3     BB  08-31-2020     70
               
  ticker        date assets
4    CCC  06-30-2020     80
5    CCC  09-30-2020     90
               

相关问题 更多 >