假设我有一个可变长度的基本“测试”数据框,该数据框是根据滑块日期选择器构造的。
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)
答案 0 :(得分:1)
以@Mayeul sgc的comment为基础构建多案例方案,并为任何寻求同一问题答案的人提供帮助: 您可以执行以下操作:
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)
希望这对您有用。让我知道您是否还需要其他东西。