I have a pandas data frame like df with a column construct_name
construct_name
aaaa_t1_2
cccc_t4_10
bbbb_g3_3
and so on. I want to first split all the names at the underscore and store the first element (aaaa,cccc, etc.) as another column name.
Expected output
construct_name name
aaaa_t1_2 aaaa
cccc_t4_10 bbbb
and so on.
I tried the following
df['construct_name'].map(lambda row:row.split("_")) and it gives me a list like
[aaaa,t1,2]
[cccc,t4,10]
and so on
But when I do
df['construct_name'].map(lambda row:row.split("_"))[0] to get the first element of the list I get an error. Can you suggest a fix. Thanks
解决方案
Just use the vectorised str method split and use integer indexing on the list to get the first element:
In [228]:
df['first'] = df['construct_name'].str.split('_').str[0]
df
Out[228]:
construct_name first
0 aaaa_t1_2 aaaa
1 cccc_t4_10 cccc
2 bbbb_g3_3 bbbb