如何将DataFrame系列创建为DataFrame索引的子字符串?

时间:2016-10-15 03:26:44

标签: python pandas dataframe

我有一个Pandas DataFrame,它有一个5位数字符串作为索引(索引是一个5位数的邮政编码)。我需要在DataFrame中创建另一个系列,这是索引的前三个字符(即3位数的邮政编码)。

例如,如果一行的索引是" 32779",我喜欢新系列'价值为" 327"。

我认为Lambda函数可能会起作用。

fte5['Zip3'] = fte5.index.astype(str).apply(lambda x: x[:3])

但这会产生错误

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

enter image description here

如果您已经拥有以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])