如何使用字典理解更改 pandas 列属性?

How to change pandas column properties with dict comprehension?

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

d = {1 : df1, 2: df2}

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

我想在一行中完成:

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

您只需要:

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

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

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