Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在Python中切片列表时的奇怪行为_Python 3.x_Pandas_String_Sklearn Pandas - Fatal编程技术网

Python 3.x 在Python中切片列表时的奇怪行为

Python 3.x 在Python中切片列表时的奇怪行为,python-3.x,pandas,string,sklearn-pandas,Python 3.x,Pandas,String,Sklearn Pandas,我在pandas中有一些数据,我想用于命名实体识别。数据样本如下 text ['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.'] tags ['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O'] 我对数据运行了

我在pandas中有一些数据,我想用于命名实体识别。数据样本如下

text
['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.']

tags
['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']
我对数据运行了
sklearn.model\u selection import train\u test\u split

# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(dataset["text"].tolist(),
                                                                dataset["tags"].tolist(),
                                                                test_size=0.20,
                                                                random_state=15)
然而,当我试图打印列表时,它会给我一些奇怪的行为,特别是,它将文本和标记周围的方括号
[]
和引号
'
作为测试和标记的一部分。例如,当我写作的时候

print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')

output
['Angie',
['B-ORG',
我的问题是,为什么要将括号和引号字符作为字符串的一部分计算?如何修复它?

试试:

text
Angie ’s is my favorite but the prices at little Tonys are better.

tags
B-ORG I-ORG O O O O O O O B-ORG I-ORG O O O

看起来您正试图将格式化为类似列表的字符串转换为列表。它不知道有什么更好的方法,所以括号和撇号就可以使用了。

我使用了
数据框
进行声明,并执行了相同的任务,即拆分
训练文本和测试文本
训练标签和测试标签
。请参考下述解决方案。然后,我们将继续处理您的场景中的
[]
'
问题

# Import all the important libraries
import pandas as pd
from sklearn.model_selection import train_test_split

# Store all String data into the 'data' variable
data = {
'text' : ['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.'],
'tags' : ['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']}

# Store above Initialized Data into DataFrame
dataset = pd.DataFrame(data)
注意:-在继续之前,始终打印
数据集的几条记录。因为您的
数据集中有时可能会出现问题,这会偏离您的预期结果

# Print a few records of 'dataset'
dataset

    text        tags
0   Angie       B-ORG
1   ’s          I-ORG
2   is          O
3   my          O
4   favorite    O
5   but         O
6   the         O
7   prices      O
8   at          O
9   little      B-ORG
10  Tonys       I-ORG
11  are         O
12  better      O
13  .           O
现在我们可以继续讨论分裂部分。我使用了你问题部分提到的相同方法

# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(
    dataset["text"].tolist(),
    dataset["tags"].tolist(),
    test_size=0.20,
    random_state=15)
因此,在拆分后,我们可以打印
train\u文本和train\u标记的切片列表

print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
上述单元格的输出如下所述:-

favorite
O
如您所见,它没有在输出中打印任何
[]
'

你的问题:-

Q.)为什么要将括号和引号字符作为字符串的一部分计算?如何修复它? 我不知道这个问题背后有什么正当的原因。但是,如果您的数据没有正确声明,或者由于任何其他声明问题,有时可能会发生这种情况。但是在继续之前打印数据集是一个很好的实践。因为您可以通过此方法识别数据的行为

解决方案:-使用
DataFrame
非常适合我。你可以用这个

希望此解决方案对您有所帮助。如果您仍然面临问题,请上传完整的代码。因此,我们可以找到相应的解决方案