首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向列名添加条件前缀

向列名添加条件前缀
EN

Stack Overflow用户
提问于 2019-05-10 06:21:08
回答 2查看 485关注 0票数 0

所以我有一个带有一些奇怪的后缀的数据帧,比如映射到某些代码的_a或_b,我想知道如何根据后缀添加前缀,并删除后缀以便于理解。

即:

代码语言:javascript
复制
    red_a    blue_a    green_b
....
....

代码语言:javascript
复制
    A red    A blue   B green
....
....

我试过了

代码语言:javascript
复制
for col in df.columns:
    if col.endswith('_a'):
        batch_match[col].replace('_a', '')
        batch_match[col].add_prefix('A ')
    else:
        batch_match[col].add_prefix('B ')

但它返回的df为NaN。

EN

回答 2

Stack Overflow用户

发布于 2019-05-10 06:28:49

您可以将pandas.DataFrame.rename与客户映射程序一起使用

代码语言:javascript
复制
df = pd.DataFrame(
    {"red_a": ['a', 'b', 'c'], "blue_a": [1, 2, 3], 'green_b': ['x', 'y', 'z']}
)

def renamer(col):
    if any(col.endswith(suffix) for suffix in ['_a', '_b']):
        prefix = col[-1]                        # use last char as prefix
        return prefix.upper() + " " + col[:-2]  # add prefix and strip last 2 chars
    else:
        return col

df = df.rename(mapper=renamer, axis='columns')
print(df)
#   A blue B green A red
#0       1       x     a
#1       2       y     b
#2       3       z     c
票数 1
EN

Stack Overflow用户

发布于 2019-05-10 06:36:43

我要做的是

代码语言:javascript
复制
df.columns=df.columns.str.split('_').map(lambda x : '{} {}'.format(x[1].upper(),x[0]))
df
Out[512]: 
  A red  A blue B green
0     a       1       x
1     b       2       y
2     c       3       z
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56068317

复制
相关文章

相似问题

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