gpt4 book ai didi

python - 将列表分配给类实例

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:41 25 4
gpt4 key购买 nike

我想获取各种变量名的列表,并将它们全部作为实例变量分配给一个类。

此外,我还想从数据库中为这些实例变量分配属性。

例如:我有一个带有标题的数据框('col1'、'col2'、'col3'、'col4')。每行应该是一个类实例,每一列应该是该类的一个实例变量。然后,每一行中的值应作为每个类实例的属性分配给每个实例变量。

我怎样才能做到这一点?

这是一个变量列表:

Index(['Id', 'MSSubClass', 'MSZoning', 'LotFrontage', 'LotArea', 'Street',
'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig',
'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType',
'HouseStyle', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd',
'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType',
'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual',
'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinSF1',
'BsmtFinType2', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', 'Heating',
'HeatingQC', 'CentralAir', 'Electrical', '1stFlrSF', '2ndFlrSF',
'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath',
'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'KitchenQual',
'TotRmsAbvGrd', 'Functional', 'Fireplaces', 'FireplaceQu', 'GarageType',
'GarageYrBlt', 'GarageFinish', 'GarageCars', 'GarageArea', 'GarageQual',
'GarageCond', 'PavedDrive', 'WoodDeckSF', 'OpenPorchSF',
'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'PoolQC',
'Fence', 'MiscFeature', 'MiscVal', 'MoSold', 'YrSold', 'SaleType',
'SaleCondition', 'SalePrice'],
dtype='object')

这是一个示例数据框:

import pandas as pd
from numpy import nan
d = {'name' : pd.Series(['steve', 'jeff', 'bob'], index=['1', '2', '3']),
....: 'salary' : pd.Series([34, 85, 213], index=['1', '2', '3']), 'male' : pd.Series([1, nan, 0], index=['1', '2', '3']), 'score' : pd.Series([1.46, 0.8, 3.], index=['1', '2', '3'])}

df = pd.DataFrame(d)

最佳答案

这很适合 namedtuple

#! /usr/bin/env python3


import collections
import pandas as pd


if __name__ == '__main__':

Person = collections.namedtuple('Person', 'male name salary score')

d = {'name': pd.Series(['steve', 'jeff', 'bob'], index=['1', '2', '3']),
'salary': pd.Series([34, 85, 213], index=['1', '2', '3']),
'male': pd.Series([1, float('NaN'), 0], index=['1', '2', '3']),
'score': pd.Series([1.46, 0.8, 3.], index=['1', '2', '3'])}
df = pd.DataFrame(d, columns=sorted(d.keys()))
print(df)

for row in df.values:
print(Person(*row.tolist()))

输出:

   male   name  salary  score
1 1.0 steve 34 1.46
2 NaN jeff 85 0.80
3 0.0 bob 213 3.00
Person(male=1.0, name='steve', salary=34, score=1.46)
Person(male=nan, name='jeff', salary=85, score=0.8)
Person(male=0.0, name='bob', salary=213, score=3.0)

关于python - 将列表分配给类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com