我有一个数据帧DF,有两列:
CLASS STUDENT
'Sci' 'Francy'
'Sci' Vacant
'math' 'Alex'
'math' 'Arthur'
'math' 'Katy'
'eng' 'Jack'
'eng' Vacant
'eng' 'Francy'
'Hist' 'Francy'
'Hist' 'Francy'
我需要所有的班级都有一个学生。其中一些已经有了。你知道吗
结果
CLASS STUDENT
'Sci' 'Francy'
'Sci' Vacant
'math' 'Alex'
'math' 'Arthur'
'math' 'Katy'
'math' Vacant
'eng' 'Jack'
'eng' Vacant
'eng' 'Francy'
'Hist' 'Francy'
'Hist' 'Francy'
'Hist' Vacant
我试过了
unique_class = DF['unique_class'].drop_duplicates()
vacant_column = pd.Series(['vacant'] * unique_class.shape[0])
temp_df = pd.concat([unique_class, vacant_column], axis=1, ignore_index=True)
DF = DF.append(temp_df, ignore_index=True)
DF.drop_duplicates(inplace=True)
它工作,但似乎太多了。有更好的办法吗?你知道吗
使用
pd.merge
输出:
还有一种方法:
原始数据框:
最终测向:
作为记录,你的解决方案没有错。您可以使用几乎相同的方法在“一行”中获得相同的结果:
[输出]
如果需要,您可以在
sort_values
和reset_index
上链接,使表格更清晰:[输出]
相关问题 更多 >
编程相关推荐