合并多个数据框架-如何自动分配列名?



假设我有五个数据帧。它们都有两列,分别名为"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的一种方法-

  1. 首先创建一个dfs列表
  2. 枚举dfs列表并设置'item'作为索引,并使用Enumerate
  3. 为'price'添加后缀
  4. 下一步连接索引'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')

将其设置为内连接

最新更新