如何在不将每个索引应用于每一行的情况下迭代数据框中的每一行?
>>> 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
我是一名优秀的程序员,十分优秀!