我有一个类型为Panda的对象,print(对象)给出以下输出
print(type(recomen_total))
print(recomen_total)
输出为
<class 'pandas.core.frame.Pandas'>
Pandas(Index=12, instrument_1='XXXXXX', instrument_2='XXXX', trade_strategy='XXX', earliest_timestamp='2016-08-02T10:00:00+0530', latest_timestamp='2016-08-02T10:00:00+0530', xy_signal_count=1)
我想把这个对象转换成pd.dataframe,怎么做呢?
我尝试了pd.DataFrame(对象)和from_dict,但它们仍抛出错误
5条答案
按热度按时间xmjla07d1#
有趣的是,它不会直接转换为 Dataframe ,而是转换为系列。一旦转换为系列,请使用系列的to_frame方法将其转换为DataFrame
希望这有帮助!!
编辑
如果您想保存列名,请使用_asdict()方法,如下所示:
z0qdvdin2#
要从itertuple namedtuple创建新的DataFrame,也可以使用list()或Series:
输出:
要省略index,请使用param index = False(但我大多数情况下都需要index用于迭代)
pzfprimi3#
以下是我的工作:
结果是:
遗憾的是,AFAIU,如果不显式地使用
_fields
这样的"受保护属性",就没有简单的方法来保留列名。ycl3bljg4#
在@伊戈尔的回答中做了一些调整
最后,我得到了这个令人满意的代码,它保留了列名,并尽可能少地使用Pandas代码。
结果是包含以下内容的csv:
esbemjvw5#
要将Pandas
.itertuples
返回的对象列表转换为DataFrame,同时保留列名:由于Pandas不建议通过在for循环中添加单行来构建DataFrame,因此我们将在最后迭代并构建DataFrame:
现在,只需一个命令就可以构建DF,而无需手动重新创建列名。