问题描述
我有一个.tsv数据框,其中的特定列有多个值,并用逗号分隔。看起来像这样:
Col1 Col2 Col3
1 star1 HIP1,KOI1,Gaia1 3.4
2 star2 HIP2,KOI2,Gaia2 4.3
3 star3 HIP3,KOI3,Gaia3 7.2
我的目标是仅从第2列中获取一部分字符串值,这样我只有一个用逗号分隔的选项。在这种情况下,将是KOI。看起来像这样:
Col1 Col2 Col3
1 star1 KOI1 3.4
2 star2 KOI2 4.3
3 star3 KOI3 7.2
考虑到KOI(x)之后的数字不遵循顺序顺序(如示例中所示),有没有办法做到这一点?
我尝试使用str.lsplit()
和split函数,但是代码返回消息:'StringMethods' object has no attribute 'lsplit'
。这是我尝试过的:
for i in df['Col2']:
df['Col2'][i] = df['Col2'].str.lsptrip(',K').str[0]
然后,当我将字符串中的孤立的“ K”字母添加到字符串中时,我会尝试添加它,但是再也没有找到。
解决方法
您也可以使用pd.Series.str.extract
:
df['Col2']=df['Col2'].str.extract('.*,(K.*),.*')
与此相同,pd.Series.str.split
:
df['Col2']=df['Col2'].str.split(',').str[1]
输出:
df
Col1 Col2 Col3
1 star1 KOI1 3.4
2 star2 KOI2 4.3
3 star3 KOI3 7.2