2017-11-10 31 views
1

如果我有一個數據幀,並且我使用.str.split()就可以了,例如 ebola_melt['str_split'] = ebola_melt.type_country.str.split("_") ,據我瞭解,它返回一個字符串列表。真的嗎?當我想要獲取Python/Pandas中的字符串列表元素時,爲什麼需要使用.str?

如果情況屬實,爲什麼我需要使用.str.get()才能獲取創建的字符串列表中的一個元素,而不是使用.get()而不是.str?例如:爲什麼這個不行,

ebola_melt['type'] = ebola_melt.str_split.get(0) 

但這個工程:

ebola_melt['type'] = ebola_melt.str_split.str.get(0) 

我感謝你在尋找答案。示例來自Datacamp。

+1

'它返回一個字符串列表。這是真的嗎?'你試過了嗎?如果沒有,什麼阻止你? –

+0

'爲什麼這不起作用,'get'不是與'pd.DataFrame'對象關聯的頭等函數,但它是_str_方法,所以它是有道理的。 –

+0

我覺得這一切都取決於大熊貓開發商和用戶對git的要求,只是like'melt'功能.. – Wen

回答

0

熊貓系列可以有幾種類型。根據類型的不同,可以調用不同類型的方法。

例如

對於一系列datetime對象的,你可以在yearmonth,或day。你甚至可以用strftime進行格式化。

適用於分類型系列。您可以訪問類別或分解代碼。

對於字符串可以joinextractcat等..

但是,它沒有什麼意義,使供串系列或可供日期時間系列分類相關方法日期時間相關的方法。相反,Pandas允許您通過訪問器來訪問字符串相關的方法,您可以看到該訪問器爲.str。之後是所有字符串相關的方法。 .dt作爲datetime和timedelta相關方法的訪問器,也適用於分類相關方法。


s = pd.Series('abc efg hij klm'.split()) 

s.str.get(1) 

0 b 
1 f 
2 i 
3 l 
dtype: object 

d = pd.Series(pd.date_range('2016-03-31', periods=4)) 

d.dt.daysinmonth 

0 31 
1 30 
2 30 
3 30 
dtype: int64 

c = pd.Series(pd.Categorical(list('abcd'), list('edcba'), True)) 

c.cat.codes 

0 4 
1 3 
2 2 
3 1 
dtype: int8 
相關問題