python - Pandas 来自其他 DataFrames 的多个 DataFrames
问题描述
假设我有一个不同长度的基本“测试”数据框,我是根据滑块日期选择器构建的。
seasons
test
2018-02-19 Winter
2018-02-20 Winter
2018-02-21 Winter
2018-02-22 Winter
... ...
2019-06-25 Summer
2019-06-26 Summer
2019-06-27 Summer
2019-06-28 Summer
假设现在我有多个不同超市的产品价格数据框,例如:
Loblaws
Summer Winter
Milk -7800.0 -3600.0
Salt -9000.0 -4500.0
Pear -15300.0 -11700.0
Wal-Mart
Summer Winter
Milk -14700.0 -10200.0
Salt -7500.0 -4800.0
Pear -3000.0 -9600.0
Whole Foods
Summer Winter
Milk -11500.0 -7500.0
Salt -7000.0 -8500.0
Pear -1000.0 -6500.0
我将如何根据每个超市的商品制作带有列的新数据框?例如:
Loblaws seasons Milk Salt Pear
2018-02-19 Winter -3600.0 -4500.0 -11700.0
2018-02-20 Winter -3600.0 -4500.0 -11700.0
... ...
2019-06-25 Summer -7800.0 -9000.0 -15300.0
2019-06-26 Summer -7800.0 -9000.0 -15300.0
沃尔玛/全食超市也一样?
我不知道将超市数据帧转换为字典然后在基于字典的循环中运行,或者我是否(加入?)它们并循环遍历超市数据帧是否会更好。感谢您的任何帮助。
编辑:我已经能够用一个来做到这一点,我只是不确定如何以迭代的方式来做到这一点(无论我有多少数据帧而没有直接单独调用它们)。做一个我用过的:
Loblaws = Loblaws.transpose()
Loblaws_Merged = pd.merge(test, Loblaws, left_on='seasons', right_index = True)
解决方案
建立在@Mayeul sgc 对多案例场景的评论的基础上,并为任何寻找同一问题答案的人的利益:您可以执行以下操作:
merged_dataframes = []
# first put all dataframes in a list
supermarkets = [loblaws, wal_mart, whole_foods]
# then use a for loop and Mayeul sgc's clever code:
for df in supermarkets:
df = df.transpose()
merged_dataframe = pd.merge(test, df, left_on='seasons', right_index = True)
merged_dataframes.append(merged_dataframe)
希望这对你有用。让我知道你是否需要别的东西。
推荐阅读
- javascript - 返回对象数组中的第一个对象(JavaScript)
- javascript - Node.js worker_threads 模块是真正的线程还是只是带有 IPC 的进程?
- javascript - 如何在 UI5 中根据用户区域设置不同的数字表示?
- amazon-web-services - 使用 Aws SES api 在链接中传递链接标签
- angular - Angular / Express SSO 身份验证错误
- python - 无法从“virtualenv.activation.powershell”(未知位置)导入名称“PowerShellActivator”
- c - 为什么在枚举中#define 相同的项目?
- java - 当为不受限制的端点发送授权标头时,Springboot webflux 抛出 401
- angular - 角 | 从 Firebase 获取一行
- javascript - 如何在反应中编辑json文件