如何更改lis中列的数据类型

2024-06-26 13:13:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对具有不同数据类型的列进行计算,因为这样会产生一个错误,我希望所有列都具有相同的数据类型。你知道吗

Question            object
Very likely         object
Quite likely       float64
Slightly likely     object
Not very likely    float64
Very unlikely       object
Total              float64
dtype: object

我尝试在lambda函数中使用float(x)。你知道吗

propensity = pd.read_excel(raw_data,'Propensity to buy')
propensity = propensity[['Question','Very likely','Quite likely','Slightly likely','Not very likely',
                          'Very unlikely','Total']]

propensity['MEAN'] = 
sum(
    [
        propensity['Very likely'].apply(lambda float(x): x*4),

        propensity['Quite likely'].apply(lambda float(x): x*3),

        propensity['Slightly likely'].apply(lambda float(x): x*2),

        propensity['Not very likely'].apply(lambda float(x): x*1),

        propensity['Very unlikely'].apply(lambda float(x): x*0)
    ]
)             

得到的结果是SyntaxError: invalid syntax


Tags: lambdaobjectnotfloatvery数据类型applyquestion
3条回答

应该是

df['column_name'].apply(lambda x: float(x) * 4)

而不是

df['column_name'].apply(lambda float(x): x*4)

你试过用df['column_name'].astype(int)吗?如果要计算某些列,可以创建for循环:

cols = ['column_1','column_2','column_3','column_n']
for col in cols:
    df[col] = df[col].astype('int') 

或使用数据类型作为条件:

if df['column_1'].dtype == object:
    print("this column contains is dtype object")
else:
    print("it is dtype is not object")

一旦将它们设置为int或float,就可以执行常规计算。你知道吗

您可以通过在从源读取数据时强制转换列来实现这一点:
例如:

pd.read_excel('file_name', dtype={'Very likely': 'float64', 'Quite likely': 'float64', 'Slightly likely': 'float64', 'Not very likely': 'float64', 'Very unlikely': 'float64'})

相关问题 更多 >