df = pd.DataFrame({'text': ['abc xyz', 'foo bar', 'test', np.nan]})
df
text
0 abc xyz
1 foo bar
2 test
3 NaN
Используйте любой str
метод.Например, str.split
:
df['text'].str.split(n=1).str[0]
0 abc
1 foo
2 test
3 NaN
Name: text, dtype: object
или str.partition
:
df['text'].str.partition(' ')[0]
0 abc
1 foo
2 test
3 NaN
Name: text, dtype: object
Приведенные выше методы упрощают работу с NaN.apply
потерпит неудачу здесь:
df['text'].apply(lambda x: x.split(':')[0])
# ---------------------------------------------------------------------------
# AttributeError Traceback (most recent call last)
# AttributeError: 'float' object has no attribute 'split'
Проверка isinstance
является исправлением для этого,
df['text'].apply(lambda x: x.split(None, 1)[0] if isinstance(x, str) else np.nan)
0 abc
1 foo
2 test
3 NaN
Name: text, dtype: object