我正在处理一些复杂的患者健康数据,希望简化对患者使用的保险类型的分类。然而,一些患者使用多种保险类型来支付医疗费用(即医疗保险和补充保险)。我已经将保险分类为私人保险或公共保险,现在我想对患者是否使用多种保险类型进行分类。
我当前的数据集如下所示:
import pandas as pd
data = {'patient_ID': [1,1,1,2,2,3,3,3,4,4,4,4],
'Public_Private': ['Public', 'Public', 'Public',
'Private', 'Public','Private', 'Private',
'Private', 'Private', 'Public', 'Private',
'Public']}
df = pd.DataFrame(data)
df
patient_ID | Public_Private | 1 | 公共 | 1
---|---|
私人 | |
私人 | |
私人 | |
私人 |
您可以按患者id分组,从组中选择public_private列,然后应用转换,您可以将其填充回新列中组的原始行。
import pandas as pd
data = {
'patient_ID': [1, 1, 2, 2, 3, 3],
'Public_Private': ['Public', 'Private',
'Private', 'Private',
'Public', 'Public'],
'Other_info': [1.1, 1.2,
2.1, 2.2,
3.1, 3.2]
}
df = pd.DataFrame(data)
print(df)
# patient_ID Public_Private Other_info
# 1 Public 1.1
# 1 Private 1.2
# 2 Private 2.1
# 2 Private 2.2
# 3 Public 3.1
# 3 Public 3.2
def simple(g_arr: pd.Series):
# ex. g_arr = ['Private', 'Public'] or ['Public', 'Public'], etc.
if len(set(g_arr)) == 1:
return g_arr.iloc[0]
return 'Mixed'
df['Simple'] = df.groupby('patient_ID')['Public_Private'].transform(simple)
print(df)
# patient_ID Public_Private Other_info Simple
# 1 Public 1.1 Mixed
# 1 Private 1.2 Mixed
# 2 Private 2.1 Private
# 2 Private 2.2 Private
# 3 Public 3.1 Public
# 3 Public 3.2 Public