将 pandas 数据框转换为命名元组列表
Convert a pandas dataframe into a list of named tuple
我正在寻找将 pandas
DataFrame
转换为类型化 NamedTuple
列表的最有效方法 - 下面是一个具有预期输出的简单示例。
我想获得与数据框中定义的类型一致的正确类型转换。
from typing import NamedTuple
import pandas as pd
if __name__ == "__main__":
data = [["tom", 10], ["nick", 15], ["juli", 14]]
People = pd.DataFrame(data, columns=["Name", "Age"])
Person = NamedTuple("Person", [("name", str), ("age", int)])
# ...
# ...
# expected output
# [Person(name='tom', age=10), Person(name='nick', age=15), Person(name='juli', age=14)]
使用itertuples:
import pandas as pd
data = [["tom", 10], ["nick", 15], ["juli", 14]]
people = pd.DataFrame(data, columns=["Name", "Age"])
result = list(people.itertuples(index=False, name='Person'))
print(result)
输出
[Person(Name='tom', Age=10), Person(Name='nick', Age=15), Person(Name='juli', Age=14)]
将 DataFrame.itertuples
与 name
参数一起使用,并为省略索引添加 index=false
:
tup = list(people.itertuples(name='Person', index=False))
print(tup)
[Person(Name='tom', Age=10), Person(Name='nick', Age=15), Person(Name='juli', Age=14)]
如果在命名元组中需要小写值 name
和 age
添加 rename
:
tup = list(people.rename(columns=str.lower).itertuples(name='Person', index=False))
print(tup)
[Person(name='tom', age=10), Person(name='nick', age=15), Person(name='juli', age=14)]
我正在寻找将 pandas
DataFrame
转换为类型化 NamedTuple
列表的最有效方法 - 下面是一个具有预期输出的简单示例。
我想获得与数据框中定义的类型一致的正确类型转换。
from typing import NamedTuple
import pandas as pd
if __name__ == "__main__":
data = [["tom", 10], ["nick", 15], ["juli", 14]]
People = pd.DataFrame(data, columns=["Name", "Age"])
Person = NamedTuple("Person", [("name", str), ("age", int)])
# ...
# ...
# expected output
# [Person(name='tom', age=10), Person(name='nick', age=15), Person(name='juli', age=14)]
使用itertuples:
import pandas as pd
data = [["tom", 10], ["nick", 15], ["juli", 14]]
people = pd.DataFrame(data, columns=["Name", "Age"])
result = list(people.itertuples(index=False, name='Person'))
print(result)
输出
[Person(Name='tom', Age=10), Person(Name='nick', Age=15), Person(Name='juli', Age=14)]
将 DataFrame.itertuples
与 name
参数一起使用,并为省略索引添加 index=false
:
tup = list(people.itertuples(name='Person', index=False))
print(tup)
[Person(Name='tom', Age=10), Person(Name='nick', Age=15), Person(Name='juli', Age=14)]
如果在命名元组中需要小写值 name
和 age
添加 rename
:
tup = list(people.rename(columns=str.lower).itertuples(name='Person', index=False))
print(tup)
[Person(name='tom', age=10), Person(name='nick', age=15), Person(name='juli', age=14)]