1

以下のコードを実行しています。インデックスとして会議名のリストを持つ別のデータフレームの列を取るデータフレームをいくつか作成します。

    df_conf = pd.read_sql("select distinct Conference from publications where year>=1991 and length(conference)>1 order by conference", db)

    for index, row in df_conf.iterrows():
            row[0]=row[0].encode("utf-8")

    df2= pd.DataFrame(index=df_conf['Conference'], columns=['Citation1991','Citation1992'])

    df2 = df2.fillna(0)
    df_if= pd.DataFrame(index=df_conf['Conference'], columns=['IF1994','IF1995'])

    df_if = df_if.fillna(0)

    df_pubs=pd.read_sql("select Conference, Year, count(*) as totalPubs from publications where year>=1991 group by conference, year", db)

    for index, row in df_pubs.iterrows():
        row[0]=row[0].encode("utf-8")

    df_pubs= df_pubs.pivot(index='Conference', columns='Year', values='totalPubs')
    df_pubs.fillna(0)

    for index, row in df2.iterrows():
        df_if.ix[index,'IF1994'] = df2.ix[index,'Citation1992'] / (df_pubs.ix[index,1992]+df_pubs.ix[index,1993])

最後の行で次のエラーが表示され続けます。

KeyError: 'Analyse dynamischer Systeme in Medizin, Biologie und \xc3\x96kologie'

私が間違っていることはよくわかりません。インデックスをエンコードしてみました。うまくいきません。私も試してみました.atが、まだうまくいきません。

非ASCII文字のインデックスで常に停止するため、エンコードに関係していることはわかっています。

私はpython 2.7を使用しています

4

2 に答える 2

1

私はこれに問題があると思います:

for index, row in df_conf.iterrows():
    row[0]=row[0].encode("utf-8")

機能する場合と機能しない場合があるということですが、警告が表示されなかったことに驚いています。

strそれに加えて、ベクトル化された方法をencodeシリーズに使用する方がはるかに高速です。

df_conf['col_name'] = df_conf['col_name'].str.encode('utf-8')

必要に応じて、同様の方法でインデックスをエンコードすることもできます。

df.index = df.index.str.encode('utf-8')
于 2015-05-15T19:56:35.480 に答える