熊猫来自其他数据框的多个数据框

时间:2019-10-29 14:54:10

标签: python pandas dataframe

假设我有一个可变长度的基本“测试”数据框,该数据框是根据滑块日期选择器构造的。

            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)

1 个答案:

答案 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)

希望这对您有用。让我知道您是否还需要其他东西。