Я бы предложил использовать понимание списка, потому что StringMethods
обычно очень медленные
%timeit df.Name.str.split(', ').str[0]
1.09 ms ± 142 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit [k.split(', ')[0] for k in df.Name.tolist()]
178 µs ± 2.49 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%timeit pd.Series([k.split(', ')[0] for k in df.Name.tolist()])
285 µs ± 618 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Настройка:
z = io.StringIO("""Name
Braund, Mr. Owen Harris
Cumings, Mrs. John Bradley (Florence Briggs Th...
Heikkinen, Miss. Laina
Futrelle, Mrs. Jacques Heath (Lily May Peel)
Allen, Mr. William Henry """)
df = pd.read_table(z)
df = pd.concat([df]*100).reset_index(drop=True)