【问题标题】:How to change pandas column properties with dict comprehension?如何使用字典理解更改熊猫列属性?
【发布时间】:2018-08-06 19:10:49
【问题描述】:

我有一个包含多个数据帧的字典,如下所示:

d = {1 : df1, 2: df2}

现在我想使用 dict 理解来更改每个数据帧中列的数据类型。

那是我想在一行中做到这一点:

d[1].loc[:,'col1'] =  d[1].loc[:,'col1'].dtype['float']
d[2].loc[:,'col1'] =  d[2].loc[:,'col1'].dtype['float']

【问题讨论】:

    标签: python pandas dictionary-comprehension


    【解决方案1】:

    您可以将字典传递给pandas.DataFrame.astype

    d = {k: v.astype({'col1': float}) for k, v in d.items()}
    

    【讨论】:

      【解决方案2】:

      你只需要:

      def myFunc(df, col):
         df[col] = df[col].astype(float)
         return df
      
      dict_ = dict(zip(dict_.keys(),[myFunc(df, 'col1') for df in dict_.values()]))
      

      例子:

      df1 = pd.DataFrame({
          'col1':['10.4','1.9']
      })
      
      df2 = pd.DataFrame({
          'col1':['101.4','11.9']
      })
      
      dict_ = {
          1:df1,
          2:df2
      }
      
      print(dict_[1].dtypes)
      

      输出:

      col1    object
      dtype: object
      

      那么,

      def myFunc(df, col):
          df[col] = df[col].astype(float)
          return df
      
      dict_ = dict(zip(dict_.keys(),[myFunc(df, 'col1') for df in dict_.values()]))
      

      现在,

      我们有,

      print(dict_[1].dtypes)
      

      输出:

      col1    float64
      dtype: object
      

      【讨论】:

        【解决方案3】:

        这是你的意思吗?

        for k in d:
            d[k]['col1'] = d[k]['col1'].astype('float')
        

        【讨论】:

          【解决方案4】:
          d = {key:df['col1'].astype('float') for (key, df) in d.items()}
          

          例子:

          >>> df1 = pd.DataFrame({'col1':['11.1','1.1']})
          >>> df2 = pd.DataFrame({'col1':['22.2','2.2']})
          >>> d = {'1': df1, '2': df2}
          >>> d['1'].dtypes
          col1    object
          dtype: object
          >>> d = {key:df['col1'].astype('float') for (key, df) in d.items()}
          >>> d['1'].dtypes
          dtype('float64')
          

          【讨论】:

          • 返回错误:“KeyError: 'There are no fields in dtype object.”
          • @AVL,它对我来说很好用。也许我正在使用与问题类似的dtype,但我已经将其编辑为astype
          猜你喜欢
          • 1970-01-01
          • 2021-03-27
          • 2023-02-22
          • 2020-05-11
          • 2018-04-19
          • 2023-01-09
          • 2019-08-20
          • 2022-10-06
          相关资源
          最近更新 更多