Pandas Dataframe 根据列值将值展平到单元格

Posted

技术标签:

【中文标题】Pandas Dataframe 根据列值将值展平到单元格【英文标题】:Pandas Dataframe Flatten values to cell based on column value 【发布时间】:2021-12-03 18:56:16 【问题描述】:

我有一个从 Excel 读取的简单数据框。为了进一步处理,我需要将“存储”值组合到一个与给定区域对应的单元格中的列表中。为了澄清,我希望每个区域只有一行。在相应的“商店”列中将列出一个单元格中的所有相应商店。

当前状态

期望的状态

我尝试实现了melt,但没有成功。

store_df  = pd.read_excel("Zones_by_Store.xlsx")
store_df.groupby(store_df['Price Zone Name'])
pd.melt(store_df, id_vars=['Price Zone Name'], value_vars=['Store No'])
store_df.to_csv('Stores.csv')

【问题讨论】:

显示的区域之后有多个区域,为简洁起见,图片被截断。 【参考方案1】:

试试这个:

import pandas as pd

price_zone = ['CA2', 'CA2', 'CA2']
store_num = [112, 162, 726]
df = pd.DataFrame(price_zone, columns=['Price Zone'])
df['Store No'] = store_num

df = (df.groupby(['Price Zone']).agg('Store No': lambda x: x.tolist()).reset_index())

print(df)

【讨论】:

如果有帮助,请接受并投票赞成这个答案

以上是关于Pandas Dataframe 根据列值将值展平到单元格的主要内容,如果未能解决你的问题,请参考以下文章

根据列值删除Python Pandas中的DataFrame行[重复]

根据列值对带有 MultiIndex 的 pandas DataFrame 进行排序

如何根据列值从 DataFrame 中选择行?

如何根据列值从 DataFrame 中选择行?

如何根据列值从 DataFrame 中选择行?

pandas - 根据列值复制每行'n'次