【问题标题】:Concatenation in Pandas-PythonPandas-Python 中的连接
【发布时间】:2017-12-29 07:28:00
【问题描述】:

我有一个 pandas 数据框,我想在其中从列中获取值并仅当这些条目的日期列和编号列匹配时才将它们连接起来。这是数据表的示例

No. Date       Code
121 1-Jul-15    AT
122 2-Jul-17    PN
122 2-Jul-17    WX
122 3-Jul-17    FX

输出应该是这样的

No. Date       Code Output
121 1-Jul-15    AT  AT
122 2-Jul-17    PN  PN/WX
122 2-Jul-17    WX  PN/WX
122 3-Jul-17    FX  FX

我希望在近 172355 行上执行此操作。

这是我试过的基本伪代码

for i in 1 to len(df)
    if date & no is same
        concatenate code to new column of only same rows
    else
        copy code to new column as it is 
i = i+1
end for

请帮助我使用 pandas 中的 python 代码获取此输出。

【问题讨论】:

    标签: python pandas loops concatenation


    【解决方案1】:

    我相信您需要transform 来获取原始DataFrame 中的新列:

    df['new'] = df.groupby(['No.','Date'])['Code'].transform('/'.join)
    print (df)
       No.      Date Code    new
    0  121  1-Jul-15   AT     AT
    1  122  2-Jul-17   PN  PN/WX
    2  122  2-Jul-17   WX  PN/WX
    3  122  3-Jul-17   FX     FX
    

    因为如果使用apply,那么输出会被聚合:

    df1 = df.groupby(['No.','Date'])['Code'].apply('/'.join).reset_index(name='new')
    print (df1)
       No.      Date    new
    0  121  1-Jul-15     AT
    1  122  2-Jul-17  PN/WX
    2  122  3-Jul-17     FX
    

    【讨论】:

    • 谢谢。这对我有用。如果我只需要在“code”列有值而不是“nan”时才需要执行此操作,我该如何更改此代码?
    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 2016-10-07
    • 1970-01-01
    • 2019-05-19
    • 2018-04-20
    • 2023-04-07
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多