【问题标题】:How can I merge and format multiple columns which contains int data type in pandas?如何在 pandas 中合并和格式化包含 int 数据类型的多个列?
【发布时间】:2019-11-30 12:54:54
【问题描述】:

我有一个像这样的数据框(如下所示),我想创建一个将它们组合在一起的新列(请注意,我还有其他包含数字的列):

Program Season  Episode 
AAA         1      1
AAA         1      2    
...
...

这是我试过的代码:

#create a new column
series['series_name'] = series[['Program', 'Season','Episode']].apply(lambda x: ''.join(str(x)), axis=1)

它给了我这样的东西:

'Program AAA\nSeason 1\nEpisode 1\nName: 0, dtype: object'

我的预期输出应该是这样的:

'AAA-Season 1-Episode 1'

谁能帮帮我,非常感谢。

【问题讨论】:

    标签: python pandas merge multiple-columns


    【解决方案1】:
    df['series_name'] = df['Program'].str.cat(
        ['Season ' + df['Season'].astype(str),
         'Episode ' + df['Episode'].astype(str)], 
        sep='-'
    )
    

    【讨论】:

    • 我还有其他包含数字的列,如果我将整个数据框设置为 str 可能不合适
    【解决方案2】:

    这是一种方法

    df=df1.copy()
    df[['Season','Episode']]=df[['Season','Episode']].astype(str).radd(['Season ','Episode '],1)
    s=df.apply('-'.join,1)
    s
    Out[79]: 
    0    AAA-Season 1-Episode 1
    1    AAA-Season 1-Episode 2
    dtype: object
    #df1['series_name']=s 
    

    【讨论】:

    • 我认为 OP 希望它作为一个单独的列而不覆盖其他列。
    • @Akaisteph7 这只是赋值 df['New']=s
    • 您仍在修改列
    猜你喜欢
    • 1970-01-01
    • 2018-02-09
    • 2019-11-19
    • 2021-12-13
    • 2019-09-09
    • 1970-01-01
    • 2020-02-06
    • 2020-02-05
    • 2018-09-18
    相关资源
    最近更新 更多