python - Pandas 转换列表值及其列名称

标签 python pandas dataframe

我有一个 pandas 数据框,其中有 1 行,列中的值按类别分隔

<表类=“s-表”> <标题> 汽车 > 奥迪 > a4 汽车 > 宝马 > 3er 摩托 > 宝马 > GS <正文> [项目1、项目2、项目3] [项目1、项目4、项目5] [项目6]

我想创建这样的结构:

<表类=“s-表”> <标题> 项目 类别 1 类别 2 类别 3 <正文> 项目 1 汽车 奥迪 a4 项目 1 汽车 宝马 3er 第 2 项 汽车 奥迪 a4 第 3 项 汽车 奥迪 a4 第 4 项 汽车 宝马 3er 第 5 项 汽车 宝马 3er 第 6 项 摩托 宝马 gs

最好的解决方案是什么?

最佳答案

您可以使用:

(df.set_axis(df.columns.str.split('\s*>\s*', expand=True), axis=1)
   .loc[0].explode()
   .reset_index(name='item')
   .rename(columns=lambda x: x.replace('level_', 'category'))
)

输出:

  category0 category1 category2   item
0       car      audi        a4  item1
1       car      audi        a4  item2
2       car      audi        a4  item3
3       car       bmw       3er  item1
4       car       bmw       3er  item4
5       car       bmw       3er  item5
6      moto       bmw        gs  item6

使用的输入:

df = pd.DataFrame({'car > audi > a4': [['item1', 'item2', 'item3']],
                   'car > bmw > 3er': [['item1', 'item4', 'item5']],
                   'moto > bmw > gs': [['item6']]})

关于python - Pandas 转换列表值及其列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74389607/

相关文章:

python - 是否可以在不生成可见窗口的情况下使用 Selenium/Python?我可以使用 lxml 吗?

python - 回归汇总输出 : Order of categories

python - 如何按顺序获取 pandas 数据框中最高、下一个最高数字等的索引和列?

python - 如何使用元组填充数据框?

python - 创建 panda 数据框并在 for 循环中 append 值

python导入同根包名不同位置的不同子包

python - refextract 导入问题 : syntax error

python - 我有两个变量,我知道它们是相等的,但我的 if 语句不能识别这个?

python - 如何在 Python 中计算数据帧子集的一个子集的平均值?

python - 根据列的值连续性按行拆分/分组 pandas DataFrame