python - 如何在不将每个索引应用于每一行的情况下迭代数据框中的每一行?

标签 python loops pandas

如何在不将每个索引应用于每一行的情况下迭代数据框中的每一行?

>>> 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。

有没有一种方法可以让我循环,这样我就可以在每一行中修改我需要的内容,但保持数据框的初始完整性,即每个索引一行,总行数?

最佳答案

正如 Kartik 所提到的,最佳实践是避免循环。

但是有可能这样循环:

for line in df2['one']: 
    print line

us 1
uk 2
china 3
india 4

但是如果你想从 one 列中提取数据,pandas 文档描述了这种拆分 here :

import pandas as pd

d2 = {'one' : pd.Series(['us 1','uk 2','china 3','india 4'], index=['a', 'b', 'c','d'])}
df2 = pd.DataFrame(d2)
print df2

df2['two'] = df2['one'].str.split(' ').str[0]
df2['three'] = df2['one'].str.split(' ').str[1]
print df2

#       one    two three
#a     us 1     us     1
#b     uk 2     uk     2
#c  china 3  china     3
#d  india 4  india     4

关于python - 如何在不将每个索引应用于每一行的情况下迭代数据框中的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34093189/

相关文章:

python - 如何在二进制文件中获得 readelf/IDA 和 Aho-Corasick 之间的相同偏移量

python - Clickatell 无法将消息路由至 Google Voice

python - 如何解决 "Mastermind"猜谜游戏?

ios - 将 NSDictionary 附加到 [NSDictionary] 会产生意想不到的结果

html - 如何在 pandas dataframe.to_html() 中设置单元格对齐方式

python - 使用 View 装饰器更新 request.POST 或 request.GET

java - 计算 csv 文件中的行数

arrays - 尝试使用循环创建具有不同值的字符串

python - OSError : [Errno 36] File name too long: for python package and . txt 文件, Pandas 打开

python - 如何更改 html 输出的数字数据格式