我有一个如下表所示的数据框。
id | 店铺 | var1 | var2 |
---|---|---|---|
1 | a | a | b |
2 | b | b | c |
我想仅使用 id 和 shop 列填充对象列表,但是表中的列可能并不总是按显示的顺序排列,因此我想通过名称引用它们,而不是如下所示的索引。我在网上搜索过但找不到解决方案。
class Test:
def __init__(self, id, shop):
self.id = id
self.shop = shop
def test_list(df:pd.DataFrame)->list:
return list(map(lambda x:Test(id=x[0],shop=x[1]),df.values.tolist()))
只需迭代数据帧的行(我假设它是 Pandas 数据帧),而无需之前转换为列表,因此您仍然可以按名称引用列:
import pandas as pd
df = pd.DataFrame([{"id": 1, "shop": "a", "var1": "a", "var2": "b"},
{"id": 2, "shop": "b", "var1": "b", "var2": "c"}])
class Test:
def __init__(self, id, shop):
self.id = id
self.shop = shop
def test_list(df:pd.DataFrame)->list:
return [Test(id=row["id"], shop=row["shop"]) for _, row in df.iterrows()]
result = test_list(df)
assert len(result) == 2
assert result[0].id == 1 and result[0].shop == "a"
assert result[1].id == 2 and result[1].shop == "b"