在python中拆分下划线并存储第一个值

2024-05-16 17:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似于df的pandas数据帧,它有一个列构造名

construct_name
aaaa_t1_2    
cccc_t4_10
bbbb_g3_3

等等。我想首先拆分下划线处的所有名称,并将第一个元素(aaaa、cccc等)存储为另一个列名。

预期产出

construct_name  name
aaaa_t1_2       aaaa
cccc_t4_10      bbbb

等等。

我试了一下 df['construct_name'].map(lambda row:row.split("_"))它给了我一个

[aaaa,t1,2]
[cccc,t4,10]

等等

但当我这么做的时候

df['construct_name'].map(lambda row:row.split("_"))[0]要获取列表的第一个元素,我会得到一个错误。你能提出一个解决办法吗。谢谢


Tags: 数据lambdaname元素mappandasdfconstruct
3条回答

在完成split之后,应该获得第一个元素(使用[0])。而不是在map之后

In [608]: temp['name'] = temp['construct_name'].map(lambda v: v.split('_')[0])

In [609]: temp
Out[609]: 
  construct_name  name
0      aaaa_t1_2  aaaa
1     cccc_t4_10  cccc
2      bbbb_g3_3  bbbb

只需使用矢量化的^{}方法^{},并在列表中使用整数索引来获取第一个元素:

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

^{}接受可选参数maxsplit

>>> construct_name = 'aaaa_t1_2'
>>> name, rest = construct_name.split('_', 1)
>>> name
'aaaa'

相关问题 更多 >