我搜索并查看了很多与我的案子类似的问题,
不幸的是,他们似乎没有解决我的问题,
因为这里的解决方案主要基于值之一是np.nan。
但是在这里,我正在寻找能够为我提供Last_Name集合的解决方案。

我创建了一个小的示例代码,如下所示:

我的数据集是:

dataset=pd.Dataframe({'First_Name':['John','John','John'],
                      'Last_Name':['Mayers','Mountain','Walts']})


我一直在尝试做的是将一个带有“ First_Name”作为“ John”的数据框,
和“ Last_Name”分别为['Mayers','Mountain','Walts'],在这里我尝试创建一个名为“ Combine”的新列。

我的代码如下:

import re

combine=[]

    for i in range(0, len(dataset)):
        m=re.match(dataset.loc[i]['Fisrt_Name'],dataset.loc[i]['First_Name'])
        if m is not None:
           combine.append(dataset.loc[i]['Last_Name'])
    dataset.loc[i]['Combine']=combine
dataset


不幸的是,上面的代码没有打印出任何名为“ Combine”的新列。
如果我单独打印出联合收割机,它将是一个列表:['Mayers','Mountain','Walts']
如果我使用dataset ['Combine'] = combine,
它将在“合并”中打印出三行,将上面的列表分开,
但我想在一行中获得附加结果,
然后我可以删除First_Name的重复行。
我在这里搜索了很多类似的问题,
但尚未找到解决此问题的有效方法。
我也尝试过sort_value'First_Name',
但这没有帮助我附加不重叠的“ Last_Name”。
有任何想法吗?
非常感谢!

最佳答案

如果我理解正确,

df_new = df.groupby(['First_Name'])['Last_Name'].apply(lambda x : ','.join(x)).to_frame()
print(df_new)
            Last_Name
First_Name
John        Mayers,Mountain,Walts


或正如Jon简洁指出的那样,我们可以在str.join中使用本机python方法apply

df_new  = df.groupby(["First_Name"])["Last_Name"].apply(','.join).to_frame()

关于python - 在First_Name行中删除重复项,但追加Last_Name的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59377635/

10-09 16:39