我搜索并查看了很多与我的案子类似的问题,
不幸的是,他们似乎没有解决我的问题,
因为这里的解决方案主要基于值之一是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/