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=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
这可能吗?如果可以,怎么做?
谢谢你的时间。
解决方案
我觉得你需要这个
将熊猫导入为 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)
输出
笔记:
- 如果您需要在循环中引用这些 df 名称,请使用以下内容:
对于 ls 中的 i: print(eval("df"+i))
- 名称两边用双下划线括起来(下划线下划线名称下划线下划线)
推荐阅读
- python - AttributeError:“函数”对象没有属性
- firebase - 如何使用用于 JS 开发的 firebase Emulator 设置 firebase firestore 和云功能测试套件
- javascript - 如何在 React JS 中将 HTML 字符串呈现给组件
- javascript - 反序列化:“数组的反序列化不支持类型”
- c# - 如何从 REG_MULTI_SZ 键中删除一个条目而不删除同一多字符串下的其他条目
- java - NoSuchMethodError:Google 云存储中的 optionsBuilder.build().getService()
- hyperledger - 创建资产时出错“ValidationException:org.hyperledger.composer.system.AddAsset 类型的意外属性:registryType,registryId”
- java - http-client 在 citrus-framework 中的 CustomCitrusHttpInterceptor
- javascript - 一段时间不活动后自动注销
- javascript - 通过获取域名进行 javascript 电子邮件验证