最近在处理数据是时,客户要求将同一病种的诊断名称罗列在一起,以“,”分开。出来前数据表格如下:
序号 | 病种名称 | 诊断名称 |
1 | 病种1 | 诊断1 |
2 | 病种1 | 诊断2 |
3 | 病种2 | 诊断3 |
4 | 病种3 | 诊断4 |
5 | 病种3 | 诊断5 |
现在要将其变成:
序号 | 病种名称 | 诊断名称 |
1 | 病种1 | 诊断1,诊断2 |
2 | 病种2 | 诊断3 |
3 | 病种3 | 诊断4,诊,5 |
方法:首先,使用groupby
函数按照'病种组合代码'列的值对数据进行分组。然后,对每个分组中的'诊断名称'列应用一个自定义的聚合函数,该函数将同一组内的'诊断名称'值连接成一个字符串,各个值之间用逗号分隔。最后,使用reset_index
函数重置索引,以便在结果中包含'病种组合代码'列作为普通列而不是索引。
代码:
import pandas as pd
# 导入文件
data = pd.read_csv(文件名称.xlsx)
# 执行groupby和agg操作
df_2 = df_1.groupby('病种组合代码')['诊断名称'].agg(lambda x: ','.join(x)).reset_index()
# 如果向获取第一个诊断,可以使用以下代码
df_2['地址'] = df_2['诊断名称'].str.split(',').str[0]
注意事项:
- 确保在使用
groupby
之前已经导入了pandas库。 - 在使用
groupby
时,确保指定的列名存在于DataFrame中。 - 在使用
agg
函数时,传入的聚合函数应该能够处理分组后的数据类型。在这个例子中,我们使用了一个简单的lambda函数来连接字符串,但在实际应用中可能需要更复杂的聚合逻辑。