2014-10-14 5 views
0

Глядя на некоторые разъяснения и некоторые направления здесьИспользование функции в то время как нарезка

--Given кадра простой Панды данных

df = pd.DataFrame(['123abc','456xyz'],columns=['foo']) 

foo 

0 123abc 

1 456xyz 

--This работы

df.foo.str[:3] 

0 123 

1 456 

--This делает не включенных в другие категории

df.foo.str[:df.foo.str.len()] 

0 NaN 

1 NaN 
+1

Я не уверен, что вы пытаетесь здесь, функция 'df.foo.str.len()' возвращает серию для длины каждой строки, это не может быть использовано в синтаксисе нарезки, как это бессмысленно, следовательно, пустые строки. – EdChum

+0

В вашем примере серия будет серией из 2 строк по 6 значений. Что вы пытаетесь достичь, или вас что-то смущает? – EdChum

+0

Спасибо за ответ. Хорошо, что имеет смысл. Я пытаюсь сократить (123abc до 123) строку путем нарезки. Есть идеи? –

ответ

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 
+0

Вау, я чувствую себя немой. Полностью забыл о отрицательном смещении. Thx Ed –

Смежные вопросы