Python 如何通过dict理解更改列属性?

Python 如何通过dict理解更改列属性?,python,pandas,dictionary-comprehension,Python,Pandas,Dictionary Comprehension,我有一个包含多个数据帧的dict,如下所示: d = {1 : df1, 2: df2} 现在我想使用dict comprehension来更改每个数据帧中列的数据类型 也就是说,我想在一行中这样做: d[1].loc[:,'col1'] = d[1].loc[:,'col1'].dtype['float'] d[2].loc[:,'col1'] = d[2].loc[:,'col1'].dtype['float'] 这就是你的意思吗 for k in d: d[k]['col1

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

d = {1 : df1, 2: df2}
现在我想使用dict comprehension来更改每个数据帧中列的数据类型

也就是说,我想在一行中这样做:

d[1].loc[:,'col1'] =  d[1].loc[:,'col1'].dtype['float']
d[2].loc[:,'col1'] =  d[2].loc[:,'col1'].dtype['float']
这就是你的意思吗

for k in d:
    d[k]['col1'] = d[k]['col1'].astype('float')
这就是你的意思吗

for k in d:
    d[k]['col1'] = d[k]['col1'].astype('float')
你只需要:

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)
>>> 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')
输出:

col1    object
dtype: object
col1    float64
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    object
dtype: object
col1    float64
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()]))
例如:

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)
>>> 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')
输出:

col1    object
dtype: object
col1    float64
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    object
dtype: object
col1    float64
dtype: object
例如:

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)
>>> 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')
例如:

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)
>>> 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')

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

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

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

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

它返回错误:“KeyError:”在dtype对象中没有字段。“@AVL,它对我来说很好。可能我使用的是与问题类似的
dtype
,但我已经将其编辑为
astype
。它返回错误:“KeyError:”dtype对象中没有字段。“@AVL,对我来说效果很好。可能我使用的是与问题类似的
dtype
,但我已经将其编辑为
astype