我有一个Pandas DataFrame,它有一个5位数字符串作为索引(索引是一个5位数的邮政编码)。我需要在DataFrame中创建另一个系列,这是索引的前三个字符(即3位数的邮政编码)。
例如,如果一行的索引是" 32779",我喜欢新系列'价值为" 327"。
我认为Lambda函数可能会起作用。
fte5['Zip3'] = fte5.index.astype(str).apply(lambda x: x[:3])
但这会产生错误
答案 0 :(得分:2)
字符串上的括号运算符通过str.slice
函数公开:
fte5.index.astype(str).str.slice(0,3)
答案 1 :(得分:0)
这有效:
fte5['Zip3'] = fte5.index.get_level_values(0)
fte5['Zip3'] = fte5['Zip3'].astype(str).apply(lambda x: x[:3])
答案 2 :(得分:0)
考虑pd.DataFrame
fte5
fte5 = pd.DataFrame(np.ones((3, 2)), ['01234', '34567', '56789'], ['X', 'Y'])
fte5
如果您已经拥有以0
开头的5位数字代码,那么它们必须已为str
。以矢量化方式获取前3个字符的最简单方法是使用.str
字符串访问器而不是apply
。
fte5.index.str[:3]
Index(['012', '345', '567'], dtype='object')
我们可以使用fte5['Zip3']
insert
fte5.insert(2, 'Zip3', fte5.index[:3])