Python 如何通过匹配来自另一个数据帧的值来填充数据帧中某列的值
我是python新手,正在使用kaggle titanic数据集进行练习 我试图通过使用具有相同票证的行来填充cabin特性缺少的几个值。也就是说,我想得到一个重复票及其对应的客舱值的列表,并用对应于同一张票的客舱值替换空值 在我的方法中,我使用以下代码创建了一个数据帧,该数据帧只包含重复票证的一次出现(假定票证附带一个CAB值;为非空),以便为其分配一个CAB值。这样,我可以通过匹配在训练集(maindf)中填写座舱值Python 如何通过匹配来自另一个数据帧的值来填充数据帧中某列的值,python,pandas,Python,Pandas,我是python新手,正在使用kaggle titanic数据集进行练习 我试图通过使用具有相同票证的行来填充cabin特性缺少的几个值。也就是说,我想得到一个重复票及其对应的客舱值的列表,并用对应于同一张票的客舱值替换空值 在我的方法中,我使用以下代码创建了一个数据帧,该数据帧只包含重复票证的一次出现(假定票证附带一个CAB值;为非空),以便为其分配一个CAB值。这样,我可以通过匹配在训练集(maindf)中填写座舱值 ticket_dupl = maindf[(maindf.duplicat
ticket_dupl = maindf[(maindf.duplicated('Ticket')) & (maindf['Cabin'].notnull())][['Ticket','Cabin']].drop_duplicates('Ticket')
这给了我一个长度为50且索引保持不变的数据帧,以下是前7行:
Ticket Cabin
88 19950 C23 C25 C27
124 35281 D26
137 113803 C123
193 230080 F2
195 PC 17569 B80
230 36973 C83
251 347054 G6
有没有办法通过匹配票证行或索引,保留票证不匹配的值,来填充my maindf中的某些CAB值?似乎无法从其他类似于我的问题的解决方案中理解
另外,我想知道是否有一种更有效的方法来实现我的目标,而不是像我那样创建数据帧。谢谢。您可以按票证分组,将具有匹配票证的行分组,并使用返回组中第一个非空值的第一个有效索引填充空值
df['Cabin'] = df.groupby('Ticket')['Cabin'].transform(lambda x: x.loc[x.first_valid_index()])
我得到这个错误,TypeError:不能使用带有空键的标签索引