我有一个名为staticData的 Dataframe ,如下所示:
narrow_sector broad_sector country exchange \
unique_id
BBG.MTAA.STM.S Semiconductors Technology CH MTAA
BBG.MTAA.CNHI.S Machinery-Diversified Industrial GB MTAA
BBG.MTAA.FCA.S Auto Manufacturers Consumer Cyclical GB MTAA
BBG.MTAA.A2A.S Electric Utilities IT MTAA
BBG.MTAA.ACE.S Electric Utilities IT MTAA
我试图通过 Dataframe 逐行迭代挑选两位信息索引(unique_id)和交换。我有一个问题迭代索引。请看我的代码:
for i, row in staticData.iterrows():
unique_id = staticData.ix[i]
exchange = row['exchange']
我试过unique_id = row['unique_id']
,但无法使用...
我正在尝试返回row1的say
unique_id = BBG.MTAA.STM.S
exchange = MTAA
3条答案
按热度按时间irlmq6kh1#
您需要以下内容:
i将是索引标签值
示例:
wfsdck302#
可能更像潘达斯的方式?
zbdgwd5y3#
首先,迭代 Dataframe 是反模式的,因为在99%的情况下,有一个矢量化的方法对你要做的任务更有效。也就是说,如果你必须循环,一些方法比其他方法更有效。
要循环访问特定列,请使用
items()
:要迭代 Dataframe ,请使用
itertuples()
:items()
从Series创建zip对象,而itertuples()
创建namedtuple,您可以在其中通过列名引用特定值。itertuples
比iterrows
快得多。例如,对于具有50000行的帧,iterrows
需要2.4秒来遍历每行,而itertuples
需要62毫秒(大约快40倍)。由于这是一个循环,因此这种差异是恒定的,如果您的 Dataframe 较大,我们将查看几秒与几分钟之间的差异。