假设我有五个数据帧。它们都有两列,分别名为"item"one_answers"price"。每个表表示时间段0、1、2、3和4的超市商品价格。
我想合并这些表,这样我就有一个表,显示每个项目在不同时期的价格。
在新表中,我希望将列命名为price_0, price_1, price_2等
是否有一种方法可以使用pd。合并功能?
合并列后,使用以下列表推导式:
df.columns = [f'Price_{idx}' for idx, col in enumerate(df.columns)]
这是pd.concat
的一种方法-
- 首先创建一个dfs列表
- 枚举dfs列表并设置'item'作为索引,并使用Enumerate 为'price'添加后缀
- 下一步连接索引'item'上的dfs列表并重置索引。
df1 = pd.DataFrame([[1,2],[3,4],[5,6],[7,8]], columns=['item','price'])
df2 = pd.DataFrame([[1,2],[3,4],[4,6],[6,8]], columns=['item','price'])
df3 = pd.DataFrame([[1,2],[4,4],[5,6],[6,8]], columns=['item','price'])
dfs = [df1,df2,df3]
dfs = [j.set_index('item').add_suffix('_'+str(i)) for i,j in enumerate(dfs)]
print(pd.concat(dfs, axis=1).reset_index())
item price_0 price_1 price_2
0 1 2.0 2.0 2.0
1 3 4.0 4.0 NaN
2 4 NaN 6.0 4.0
3 5 6.0 NaN 6.0
4 6 NaN 8.0 8.0
5 7 8.0 NaN NaN
默认情况下,pd.concat
执行外连接,但您可以将其更改为pd.concat(dfs, axis=1, join='inner')