【发布时间】:2015-12-04 16:40:54
【问题描述】:
如何在不将每个索引应用于每一行的情况下迭代数据框中的每一行?
>>> d2 = {'one' : pd.Series(['us 1','uk 2','china 3','india 4'], index=['a', 'b', 'c','d'])}
>>> df2 = pd.DataFrame(d2)
>>> df2
one
a us 1
b uk 2
c china 3
d india 4
>>> for index, row in df2.iterrows():
>>> for line in df2['one']:
>>> print index, line
a us 1
a uk 2
a china 3
a india 4
b us 1
b uk 2
b china 3
b india 4
c us 1
c uk 2
c china 3
c india 4
d us 1
d uk 2
d china 3
d india 4
我希望能够修改第一列中的每一行,为此,我相信我需要以下行:for line in df2['one']:
但是,正如你所看到的,当我写下这一行时,索引 a 会遍历整个数据帧,依此类推,直到索引 d。
有没有一种方法可以循环,以便我可以在每一行中修改我需要的内容,但保持数据框的初始完整性,即每个索引一行,总行数?
【问题讨论】:
-
内联代码是通过用反引号包围来添加的(例如,`code` 将呈现为
code),而缩进代码块是通过将每行缩进 4 个空格来完成的。此外,python 输入/输出的标准语法(类似于交互式会话),如果使用>>>进行输入。您可以点击灰色的edit按钮查看我如何重新格式化您的文本以供将来参考。 -
你到底想做什么?你不是在问你真正的问题是什么,你想要的是关于你解决它的方法的建议。这很糟糕,被称为XY Problem。读它,下次避免它。循环非常慢,像 Pandas 这样的包很少需要循环。您真正想要完成的事情可能无需任何循环即可完成。但是,除非您正确地提出问题,否则您将无法获得帮助。 (这就是为什么没有人回复你,即使你问了 14 个小时。)
-
感谢 Kartik 向我解释这一点。我会发一个新帖子,里面有我的问题。
-
这是我的新帖子。谢谢你帮助我。 link