将DataFrame对象转换为字符串或对齐DataFrame编码

我正在尝试将文本的数据框列拆分为每个单独的词以进行分析。首先,我可以使用CSV文件中的一个小型数据集来完成此操作。工作代码如下:

data = pd.read_csv('PLUSCA.csv',encoding='utf8')
#print(data)

print(data['DESCRIPTION'])
# Data type is object 

data['words'] = data['DESCRIPTION'].str.strip().str.split('[\W_]+')

# Clean Data 
dataClean = data[['SITEID','DESCRIPTION','words']].copy()
print(dataClean['words'])

现在,当我尝试通过SQL查询(不具有encoding='utf-8'的选项)提取更大的数据集时,就会出现问题。

SQLquery = pd.read_sql_query("""long working query""",conn) 
data = pd.DataFrame(SQLquery)

print(data.head())
print(data['LDTEXT'])

# Create word array 
print(data['LDTEXT'])
#returns correct text 
print(data['LDTEXT'].dtype)
#returns object - same as working code 
data['words'] = data['LDTEXT'].str.strip().str.split('[\W_]+')

我尝试了几种不同的方法,包括但不限于:

data['LDTEXT'] = data['LDTEXT'].astype(str)
data['words'] = data['LDTEXT'].apply(str).str.strip().str.split('[\W_]+')
data['words'] = data[u'LDTEXT'].series.str.strip().str.split('[\W_]+')

#doesnt exist but tried
data = pd.DataFrame(SQLquery,encodeing'utf-8')

我不断收到以下错误之一:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 172: character maps to <undefined>

SystemError: decoding with 'WINDOWS-1252' codec failed (SystemError: <built-in function charmap_decode> returned a result with an error set)

AttributeError: Can only use .str accessor with string values!

还有一些明显的东西,例如:

TypeError: __init__() got an unexpected keyword argument 'encoding'

两个数据集之间的唯一区别是不起作用,这是因为文本大得多,并且是从SQL(而不是CSV)导入的。另外,我尝试了一些astype('|S')来处理大字符串。仍然没有运气。我觉得这是一个编码问题。如何检查数据的编码并为SQL导入更改它?数据的大小重要吗?大字节字符串的处理方式不同吗?有效的数据集文本每个可能只有1-2个句子,其中较大的集合最多可以是每行几个段落。

或如何将其正确转换为字符串(我想避免使用该字符串,因为我知道我的dtype object脚本可以正常工作)?

我在这里想念什么?

让我知道您是否也需要更多信息

编辑

我添加了以下测试

for i,row in enumerate(data['LDTEXT']):
    #print("#################### NEW ROW ######################")
    #print(row)
    print(i)
    text = row.read()
    #print(text)
    try:
        print("TESTING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
        text.strip().split('[\W_]+') 
        print(text)
    except UnicodeDecodeError:
        print(text)
        break

似乎Oracle创建cx_Oracle.LOB对象而不是常规的python对象。

l464547980 回答:将DataFrame对象转换为字符串或对齐DataFrame编码

我经历了类似的事情,因为我的数据集中有无效字符,所以无法解码数据。找到无效字符所在的行后,我能够在与数据进行交互之前将其删除。

您是否尝试过将句子拆分成数据子集上的单词?

例如:


    /* Number of Cards by Row based on Viewport */
    @media (min-width: 576px) {
        .card-deck .card {
            min-width: 50.1%; /* 1 Column */
            margin-bottom: 12px;
        }
    }

    @media (min-width: 768px) {
        .card-deck .card {
            min-width: 33.4%;  /* 2 Columns */
        }
    }

    @media (min-width: 992px) {
        .card-deck .card {
            min-width: 25.1%;  /* 3 Columns */
        }
    }

    @media (min-width: 1200px) {
        .card-deck .card {
            min-width: 20.1%;  /* 4 Columns */
        }
    }

您可以找到任何行吗?如果是这样,您能找到专门不起作用的任何行吗?对于行无效的行,“ LDTEXT”列中的数据是什么样的?

您可以使用以下类似的方法来识别数据中的第一行:

data.iloc[0]['LDTEXT'].str.strip().str.split('[\W_]+')
本文链接:https://www.f2er.com/3148997.html

大家都在问