簡體   English   中英

如何創建一個DataFrame系列作為DataFrame索引的子字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM