我有3个数据帧, 测向
df = pd.DataFrame({'Name': ['CTA15', 'CTA16', 'AC007', 'AC007', 'AC007'],
'AA_ID': [22, 22, 2, 2, 2],
'BB_ID':[4, 5, 6, 8, 9],
'CC_ID' : [2, 2, 3, 3, 3],
'DD_RE': [4,7,8,9,0],
'EE_RE':[5,8,9,9,10]})
和df逖ID
^{pr2}$另一个是df_RE
,这两个数据帧都有列名,所以我需要将它合并到数据帧df中,然后根据数据帧名称的最后一部分来选择列。也就是说,例如,如果数据帧是df_ID
,那么我需要所有以"ID" + "Name"
结尾的列,用于来自数据帧df
的所有匹配行,如果数据帧id df_REL
,那么我需要df中所有以"RE" + "Name"
结尾的列,并且我想单独保存它。
我知道我可以在循环内部打电话
for dfs in dataframes:
ID=[col for col in df.columns if '_ID' in col]
df_ID=pd.merge(df,df_ID,on='Name')
df_ID=df_ID[ID]
但是这里的ID,必须在数据帧以RE结尾时再次更改,等等,我有两个不同字符串的文件,所以任何更好的解决方案都会很好
最后,我需要df_ID,因为所有列都以ID结尾
df_ID = pd.DataFrame({'Name': ['CTA15', 'CTA16'],
'AA_ID': [22, 22'],
'BB_ID':[4, 5],
'CC_ID' : [2, 2]})
任何帮助都很好
您可以先将df与df_ID合并,然后取以ID结尾的列
同样,这也可以用于df_RE df。在
^{pr2}$假设您在
df
中的列是Name
以及任何带有后缀(例如,_ID
,_RE
)的后缀,那么您可以通过列名进行解析,首先提取所有唯一的可能的后缀:现在,有了后缀列表,接下来要创建一个现有数据帧的字典,其中字典中的键是后缀,值是带有后缀名的数据帧(例如
^{pr2}$df_ID
,df_RE
):现在,您可以在
suffixes
列表中循环以提取列表中每个后缀的相应列,并执行合并和列提取:现在有了后缀数据帧的字典。如果希望将数据帧作为单独的变量,而不是将它们保存在字典中,现在可以将它们设置为单个对象:
在一个例子中把它们放在一起
结果:
相关问题 更多 >
编程相关推荐