如何使用Pandas连接多行中的值?

如何使用Pandas连接多行中的值?,pandas,Pandas,在屏幕截图中,“Ctrl”列包含一个键值。我有两个重复的OTC-07行需要合并。我想讨论OTC-07的列值的其余部分。i、 合并后,OTC-07应具有类型A、B和断言A、B、c、d。。有人能帮我吗o首先定义给定结构的数据帧: import pandas as pd import numpy as np df = pd.DataFrame({ 'Ctrl': ['OTC-05', 'OTC-06', 'OTC-07', 'OTC-07', 'OTC-08'], 'Type':


在屏幕截图中,“Ctrl”列包含一个键值。我有两个重复的OTC-07行需要合并。我想讨论OTC-07的列值的其余部分。i、 合并后,OTC-07应具有类型A、B和断言A、B、c、d。。有人能帮我吗o

首先定义给定结构的数据帧:

import pandas as pd
import numpy as np
  
df = pd.DataFrame({
    'Ctrl': ['OTC-05', 'OTC-06', 'OTC-07', 'OTC-07', 'OTC-08'],
    'Type': ['A', 'A', 'A', 'B', np.NaN],
    'Assertion': ['a,b,c', 'c,b', 'a,c', 'b,c,d', 'a,b,c']
})

df
输出:

然后用空字符串替换NaN值:

df = df.replace(np.NaN, '', regex=True)
然后按列“Ctrl”分组,并聚合列“Type”和“Assertion”。请注意,断言聚合有点棘手,因为您不需要简单的连接,而是需要唯一字母的排序列表:

df.groupby(['Ctrl']).agg({
    'Type': ','.join, 
    'Assertion': lambda x: ','.join(list(sorted(set(','.join(x).split(',')))))
})
输出:


请不要发布数据或代码截图。用实际数据替换它们。我们不会重新键入您的数据。最好将您的数据作为测试而不是图像发布。其实很简单!