复制到新的DataFrame但失败的列失败

时间:2015-12-01 17:49:33

标签: python pandas

我正在做这个人。在熊猫:

    all_df = pd.DataFrame()
    all_df[self.FAO_code] = per_df[self.FAO_code]
    all_df[self.ISO_code] = per_df[self.ISO_code]
    all_df[self.cft_id] = per_df[self.cft_id]
    all_df[self.cft_type] = per_df[self.cft_type]

在某些情况下,per_df中缺少列self.cft_id。在这种情况下,all_df[self.cft_id] = per_df[self.cft_id]会导致错误。解决此问题的最佳方法是什么,即处理列缺失的情况?

  1. 包装尝试除外。在except子句中,只有pass
  2. 还有其他方式吗?

    修改

    per_df的一部分:

       ISO  Country_FAO       funct_type    Y1961    Y1962    Y1963    Y1964 
    0    4  Albania             C3annual  3058729  3183956  3214308  3233208   
    1    4  Albania          C3perennial    99999   100000   100000   105000   
    2    4  Albania             C4annual   523500   524500   525500   531500   
    3    4  Albania          C4perennial     1800     1800     1800     1800   
    4    4  Albania             N-fixing    20500    21000    22500    22500 
    

2 个答案:

答案 0 :(得分:1)

你也可以这样做:

for col in [self.FAO_code, ..., self.cft_type]:
    if col in per_df.columns:
        all_df[col] = per_df.loc[:, col]

答案 1 :(得分:1)

您可以使用filter方法。它忽略了不存在的列:

all_df = per_df.filter([self.FAO_code, self.ISO_code, self.cft_id, self.cft_type])