use*_*317 4 python dataframe pandas
如何创建单行数据作为pandas.core.frame.Pandas object?
因此,当您使用 迭代数据帧 (df) 时for row in df.itertuples(),每一行都将是一个pandas.core.frame.Pandas对象。我想创建一个该类型的对象。
例如:
import pandas as pd
d = [{'a': 1, 'b': 2}]
df = pd.DataFrame(d)
print(type(df))
print("a", df.a)
for row in df.itertuples():
print(type(row))
print("a", row.a)
myrow = None
df = pd.DataFrame(d)
for row in df.itertuples():
myrow = row
print(type(myrow))
print("a", myrow.a)
Run Code Online (Sandbox Code Playgroud)
其输出为:
<class 'pandas.core.frame.DataFrame'>
a 0 1
Name: a, dtype: int64
<class 'pandas.core.frame.Pandas'>
a 1
<class 'pandas.core.frame.Pandas'>
a 1
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,pandas.core.frame.DataFrame的行为与预期不同pandas.core.frame.Pandas。
我真的不想myrow按照上面的方式创建,所以我想知道创建该对象的更有效/直接的方法是什么。假设我只有 1 个想要转换为pandas.core.frame.Pandas对象的数据列表
每次迭代都会itertuples给出一个像这样的对象:
Pandas(Index=0, a=1, b=2)
Run Code Online (Sandbox Code Playgroud)
Pandas只是itertuples name参数的默认名称,例如:
>>> help(df.itertuples)
Help on method itertuples in module pandas.core.frame:
itertuples(index=True, name='Pandas') method of pandas.core.frame.DataFrame instance
Iterate over DataFrame rows as namedtuples.
Parameters
----------
index : bool, default True
If True, return the index as the first element of the tuple.
name : str or None, default "Pandas"
The name of the returned namedtuples or None to return regular
tuples.
Run Code Online (Sandbox Code Playgroud)
默认名称是Pandas. 这只是 的名称namedtuple。
如果更改该名称,类型将变得不同:
for row in df.itertuples(name='newname'):
print(row)
print(type(row))
print("a", row.a)
Run Code Online (Sandbox Code Playgroud)
输出:
newname(Index=0, a=1, b=2)
<class 'pandas.core.frame.newname'>
a 1
Run Code Online (Sandbox Code Playgroud)
这是 s 的默认行为namedtuple,示例:
>>> from collections import namedtuple
>>> a = namedtuple('Pandas', ['x', 'y', 'z'])
>>> a(1, 2, 3)
Pandas(x=1, y=2, z=3)
>>> type(_)
<class '__main__.Pandas'>
>>>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的, this 的类型是Pandas,它是 this 的类型名称namedtuple,因此itertuples不会给出Pandas对象,而只是输出的默认集名称itertuples namedtuple。
正如collections.namedtuple文档中提到的:
返回一个名为typename的新元组子类。新的子类用于创建类似元组的对象,这些对象具有可通过属性查找访问的字段,并且可索引和可迭代。子类的实例还有一个有用的文档字符串(带有 typename 和 field_names)和一个以
__repr__()某种格式列出元组内容的有用方法name=value。
正如您所看到的,它创建了一个新类型。
| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |