Python 如何在数据帧中进行字符串的左、右和中
在熊猫数据框中,我如何应用一种excel left('state',2)来只获取前两个字母。理想情况下,我也想学习如何在数据帧中使用left、right和mid。因此,对于这个具体的例子,我们需要一个等价物,而不是一个“把戏”Python 如何在数据帧中进行字符串的左、右和中,python,pandas,Python,Pandas,在熊猫数据框中,我如何应用一种excel left('state',2)来只获取前两个字母。理想情况下,我也想学习如何在数据帧中使用left、right和mid。因此,对于这个具体的例子,我们需要一个等价物,而不是一个“把戏” data = {'state': ['Auckland', 'Otago', 'Wellington', 'Dunedin', 'Hamilton'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3
data = {'state': ['Auckland', 'Otago', 'Wellington', 'Dunedin', 'Hamilton'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
df = pd.DataFrame(data)
print df
pop state year
0 1.5 Auckland 2000
1 1.7 Otago 2001
2 3.6 Wellington 2002
3 2.4 Dunedin 2001
4 2.9 Hamilton 2002
我想得到这个:
pop state year StateInitial
0 1.5 Auckland 2000 Au
1 1.7 Otago 2001 Ot
2 3.6 Wellington 2002 We
3 2.4 Dunedin 2001 Du
4 2.9 Hamilton 2002 Ha
列中每个值的前两个字母:
>>> df['StateInitial'] = df['state'].str[:2]
>>> df
pop state year StateInitial
0 1.5 Auckland 2000 Au
1 1.7 Otago 2001 Ot
2 3.6 Wellington 2002 We
3 2.4 Dunedin 2001 Du
4 2.9 Hamilton 2002 Ha
最后两个是df['state'].str[-2:]
。不知道中间的确切用途,但可以使用apply
方法将任意函数应用于列:
>>> df['state'].apply(lambda x: x[len(x)/2-1:len(x)/2+1])
0 kl
1 ta
2 in
3 ne
4 il
关于mid,可能需要一个捷径代码 df['state'].str[3,5]
这将从第3个字符开始,并为您提供字符串的第3和第4个字符。谢谢@alko,我之前尝试了[-2:0],但出现了syntex错误,您的答案已经为我解决了这一问题。我有另一个示例,尝试应用8位数字的前两位数字。然后我得到了错误。”标量变量的索引无效“我如何应用上述方法来获取“年”中的最后两个数字?”@IcemanBerlin您是否需要结果模100(例如,对于
2000
,它将是0
),或者需要转换为字符串,对于相同的2000
,要获得'100'
?基本上我所拥有的是这种格式的201302周,与2013年第2周一样。我不确定它在我的数据帧中是字符串还是整数。但我试图将最后两位数字分开,以便在本例02中返回。我真的想试试看,这一周的最大月份是多少。因此,201302将是1月或1月。第201301周将是2012年12月和2013年1月的最大值,因此是后者,返回01。@IcemanBerlin在这个细节中,在后续评论中得到回答并不是那么微不足道。我建议你用这个问题开始一个新的话题(从几周到几个月的转换)。请注意,您可以使用类似于df['year']的东西推断数据类型。dtype
。这里有一个输入错误,应该是str[3:5],而不是str[3,5]