【问题标题】:Selecting columns from a dataframe从数据框中选择列
【发布时间】:2020-08-30 12:18:31
【问题描述】:

我有一个包含 1,000 只股票的月回报数据框,其中 id 作为列名。 monthly returns

我只需要选择与另一个数据框中的值匹配的列,其中包括我想要的 id。

permno list

我确信这真的很简单,但我已经苦苦挣扎了 2 天,如果有人有一个简单的解决方案,我将非常感激。谢谢。

【问题讨论】:

  • 请包含reproducible data,而不是数据图像
  • 谢谢。新的贡献者,我感谢有关如何创建更好帖子的指导。

标签: dataframe stockquotes


【解决方案1】:

您可以将单列永久列表数据框 (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()

【讨论】:

    【解决方案2】:

    正如我所料,答案比我想的要简单。基本上,我需要将我的 permnos 列表中的整数值重新转换为字符串。

    osr_curr_permnos['0'] = osr_curr_permnos['0'].apply(str)
    keep = osr_curr_permnos['0'].values
    

    然后我可以使用它从我的返回数据框中选择列,这些列具有字符串值作为列标题。

    all_rets[keep]
    

    这只是 int 与 string 的不匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 2011-08-17
      相关资源
      最近更新 更多