2015-12-04 22 views
2

如何迭代數據幀中的每一行而不將每個索引應用於每一行?如何迭代數據框中的每一行而不將每個索引應用於每一行?

>>> 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']:

但是,正如你所看到的,當我寫這條線,在整個數據框中索引一個循環,依此類推到索引d。

有沒有一種方法可以循環,以便我可以在每行中修改我需要的內容,但是保持數據框的初始完整性,對於每個索引,對於行總數來說,它是一行?

+0

內嵌代碼是用反引號周圍添加(例如''code''會呈現爲'code'),而縮進的代碼塊是通過用4個空格縮進每行來完成的。此外,如果使用「>>>」輸入,python輸入/輸出的標準語法(類似於交互式會話)。您可以點擊灰色的「編輯」按鈕查看我如何重新格式化文本以備將來參考。 – DilithiumMatrix

+0

謝謝你,第一次來這裏。 –

+0

歡迎來到StackOverflow! – DilithiumMatrix

回答

1

正如Kartik所說,最佳實踐是避免循環。

但它有可能循環是這樣的:

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

us 1 
uk 2 
china 3 
india 4 

但是如果你想提取one列數據,熊貓文檔描述了這種分裂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 
+0

謝謝你,Jezrael。這裏有一個新的[後](http://stackoverflow.com/questions/34121379/how-do-i-make-new-columns-in-data-frame-from-split-string-in-a--of-of我希望能更清楚地問我的問題。 –

相關問題