我希望有人可以帮助我。
我有一个包含具有相似名称的列的数据框(请参阅示例数据)
我有 3 个额外的列名列表,其中包括列的原始名称(即问号之前出现的字符串(请参阅列名列表)
我需要根据匹配 3 个列表中存在的列名的第一部分,将 df 数据帧子集为 3 个单独的数据帧。底部的预期输出。
它必须在列表(或程序化的东西)中,因为我有很多这样的列。我尝试了模式匹配,但因为某些名称非常相似,它们匹配多个列表。
先感谢您!
示例数据
df = {'id': ['1','2','3','4'],
'ab? op': ['green', 'red', 'blue', 'None'],
'ab? 1': ['red', 'yellow', 'None', 'None'],
'cd': ['L', 'XL', 'M','L'],
'efab? cba' : ['husband', 'wife', 'husband', 'None'],
'efab? 1':['son', 'grandparent', 'son', 'None'],
'efab? 2':['None', 'son', 'None', 'None'],
'fab? 4':['9', '10', '5', '3'],
'fab? po':['England', 'Scotland', 'Wales', 'NA'] }
df = pd.DataFrame(df, columns = ['id','ab? op', 'ab? 1', 'cd', 'efab? cba', 'efab? 1', 'efab? 2', 'fab? 4', 'fab? po'])
其他 3 个数据框中的列名列表
df1_lst = ['ab', 'cd']
df2_lst = ['efab']
df3_lst = ['fab']
期望的输出
df1 = ['ab? op', 'ab? 1', 'cd']
df2 = ['efab? cba', 'efab? 1', 'efab? 2']
df3 = ['fab? 4', 'fab? po']