我有一个ID为列名的1000支股票的月收益的数据框。 monthly returns
我只需要选择与另一个数据框中包含我想要的ID的值匹配的列即可。
我确信这确实很简单,但是我已经苦苦挣扎了2天,如果有人有一个简单的解决方案,将非常感谢。谢谢。
答案 0 :(得分:0)
您可以将单列permno列表数据帧(osr_curr_permnos)转换为列表,然后使用该列表从主数据帧(all_rets)中选择某些列。
要将osr_curr_permnos列“ 0”转换为列表,可以使用.to_list()
然后,您可以使用该列表对all_rets和.copy()进行切片,以将其的新副本复制到新的数据框中。
python代码可能类似于:
keep = osr_curr_permnos['0'].to_list()
selected_rets = all_rets[keep].copy()
“ keep”将是一个列表,“ selected_rets”将是您的新数据框。
如果osr_curr_permnos有重复的机会,则需要将其过滤掉:
keep = osr_curr_permnos['0'].drop_duplicates().to_list()
selected_rets = all_rets[keep].copy()
答案 1 :(得分:0)
如我所料,答案比我做的要简单。基本上,我需要在permnos列表中获取整数值,并将其重铸为字符串。
osr_curr_permnos['0'] = osr_curr_permnos['0'].apply(str)
keep = osr_curr_permnos['0'].values
然后,我可以使用它从我的return数据框中选择具有字符串值作为列标题的列。
all_rets[keep]
这只是int vs. string的不匹配。