首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接pandas中列的值

连接pandas中列的值
EN

Stack Overflow用户
提问于 2021-07-21 18:59:48
回答 5查看 50关注 0票数 1

我有以下数据框:

代码语言:javascript
复制
    Zone    Store   Department  TTLSales    
0   APV                         220 
1   APV     ST12                100 
2   APV     ST12    Elec        40  
3   APV     ST12    Grocery     20  
4   APV     ST12    CPG         40 

我希望包含一个列,将这些值连接为:

代码语言:javascript
复制
    Zone    Store   Department  TTLSales    id
0   APV                         220         APV
1   APV     ST12                100         APV.ST12
2   APV     ST12    Elec        40          APV.ST12.Elec
3   APV     ST12    Grocery     20          APV.ST12.Grocery
4   APV     ST12    CPG         40          APV.ST12.CPG

我是熊猫的新手,已经花了很多时间,但我不能理解。

EN

回答 5

Stack Overflow用户

发布于 2021-07-21 19:05:42

尝试:

代码语言:javascript
复制
#Firstly fill NaN's of the columns:
df[['Zone','Store','Department']]=df[['Zone','Store','Department']].fillna('')
#Finally:
df['id']=(df['Zone']+'.'+df['Store']+'.'+df['Department']).str.rstrip('.')

如果有超过4列,则使用apply()(性能方面,第一种方法比apply更快):

代码语言:javascript
复制
#Firstly fill NaN's of the columns:
df[['Zone','Store','Department']]=df[['Zone','Store','Department']].fillna('')
#Finally:
df['id'] = df[['Zone','Store','Department']].apply('.'.join, axis=1).str.rstrip('.')
票数 1
EN

Stack Overflow用户

发布于 2021-07-21 19:12:21

你可以在这里使用带有str.joindf.agg

代码语言:javascript
复制
df = df.fillna('')
df['id'] = df[['Zone','Store','Department']].agg('.'.join, axis=1)
票数 1
EN

Stack Overflow用户

发布于 2021-07-21 19:47:27

可能工作过度了,但是这里有另一种使用reduce来解决这个问题的方法

代码语言:javascript
复制
from functools import reduce

cols = ['Zone','Store','Department']
f = lambda x,y : (x +'.'+y).str.rstrip(".")
#or# f = lambda x,y : x.str.cat(y,sep='.').str.rstrip(".")

df['id'] = reduce(f,map(df.fillna('').get, cols))

代码语言:javascript
复制
print(df)

  Zone Store Department  TTLSales                id
0  APV   NaN        NaN       220               APV
1  APV  ST12        NaN       100          APV.ST12
2  APV  ST12       Elec        40     APV.ST12.Elec
3  APV  ST12    Grocery        20  APV.ST12.Grocery
4  APV  ST12        CPG        40      APV.ST12.CPG
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68468319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档