[英]How to create a DataFrame series as a sub-string of a DataFrame Index?
我有一個Pandas DataFrame,它的索引是5位數字的字符串(索引是5位的郵政編碼)。 我需要在DataFrame中創建另一個系列,該系列是索引的前三個字符(即3位郵政編碼)。
例如,如果某行的索引為“ 32779”,則我希望新系列的值為“ 327”。
我認為Lambda函數可能有效
fte5['Zip3'] = fte5.index.astype(str).apply(lambda x: x[:3])
但這給出了一個錯誤
字符串上的方括號運算符通過str.slice
函數公開:
fte5.index.astype(str).str.slice(0,3)
這工作:
fte5['Zip3'] = fte5.index.get_level_values(0)
fte5['Zip3'] = fte5['Zip3'].astype(str).apply(lambda x: x[:3])
考慮pd.DataFrame
fte5
fte5 = pd.DataFrame(np.ones((3, 2)), ['01234', '34567', '56789'], ['X', 'Y'])
fte5
如果您已經有以0
開頭的5位郵政編碼,那么它們必須已經是str
。 以矢量化方式獲取前三個字符的最簡單方法是使用.str
字符串訪問器,而不是apply
。
fte5.index.str[:3]
Index(['012', '345', '567'], dtype='object')
我們可以使用insert
將其分配給fte5['Zip3']
fte5.insert(2, 'Zip3', fte5.index[:3])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.