在这里寻找一些澄清和一些方向
- 给出一个简单的Pandas数据框
df = pd.DataFrame(['123abc','456xyz'],columns=['foo'])
foo
0 123abc
1 456xyz
- 这有效
df.foo.str[:3]
0 123
1 456
- 这不是
df.foo.str[:df.foo.str.len()]
0 NaN
1 NaN
答案 0 :(得分:1)
如果您只是想从字符串中提取数字,那么您可以使用extract
:
In [23]:
df = pd.DataFrame(['123abc','45xyz'],columns=['foo'])
df.foo.str.findall(r'\d+').str[0]
Out[23]:
0 123
1 45
Name: foo, dtype: object
如果您只想从字符串的开头切换到最后3个字符,那么您可以使用负偏移:
In [25]:
df = pd.DataFrame(['123abc','45xyz'],columns=['foo'])
df.foo.str[:-3]
Out[25]:
0 123
1 45
Name: foo, dtype: object