python - 如何融化 pandas 中的数据框并连接字符串以获取值

标签 python pandas concatenation melt

假设我有一个数据框

enter image description here

我想重新调整它的形状并连接字符串

enter image description here

我可以使用熔化 reshape 它,但我丢失了描述。我尝试过转型但没有运气 有什么想法吗?

代码:

import pandas as pd
x = [['a', 'Electronics', 'TV', '42" plasma'], ['a', 'Electronics', 'TV', '36" LCD'], ['a', 'Electronics', 'hifi', 'cd player'], ['a', 'Electronics', 'hifi', 'record player'], ['b', 'Sports', 'Soccer', 'mens trainers'], ['b', 'Sports', 'Soccer', 'womens trainers'], ['b', 'Sports', 'golf', '9 iron']]

df = pd.DataFrame(x, columns =['id', 'category','sub_category','description'])
y = pd.melt(df, id_vars=['id'],value_vars=['category','sub category'])['description'].transform(lambda x : ' '.join(x))

最佳答案

第一个问题melt,需要将description列添加到id_vars,然后将join聚合>groupby,所以全部是:

y = (pd.melt(df, 
             id_vars=['id','description'],
             value_vars=['category','sub_category'], 
             value_name='Category')
       .groupby(['id','Category'])['description']
       .agg(' '.join)
       .reset_index())


print (y)
  id     Category                                 description
0  a  Electronics  42" plasma 36" LCD cd player record player
1  a           TV                          42" plasma 36" LCD
2  a         hifi                     cd player record player
3  b       Soccer               mens trainers womens trainers
4  b       Sports        mens trainers womens trainers 9 iron
5  b         golf                                      9 iron

关于python - 如何融化 pandas 中的数据框并连接字符串以获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67105921/

相关文章:

python - 当前使用的 Python 版本是什么,包应该支持哪些版本?

Python、Numpy、用户指南 1.9.1。 'StringIO' 后续 python 版本的正确替代方案是什么?

python - 使用 pandas 将字符串列连接到新列时出现问题吗?

python - 基本的 BeautifulSoup 维基百科抓取

sql - 在 SQL 中连接计算字段

javascript - 在 jquery 对象列表上同时使用 array.concat() 和 .slice() 时丢失范围

python - REGEX:删除带有一个或两个字母的字符串之间的空格

python - 如何找到在线性时间和常数空间中出现超过 N/3 次的值

python - Pandas:将行追加到已经通过 pandas.DataFrame.apply 运行的 DataFrame

c - C中连接函数的实现问题