0

かなり大きなコードで奇妙な問題が発生しました。通常、row_index 変数をヘルプとして使用しながら、.loc を使用してループ内の特定の列の特定のアイテムを変更します。以下があると仮定しましょう:

df['Column1'] = 0

list = [0,1,2,3,4,...,100]
for x in list
    ....       
    print senti_pos_value
    print output_rowindex_list        

    df.iloc[output_rowindex_list,df.columns.get_loc('Column1')] = senti_pos_value

    output_rowindex_list = output_rowindex_list + 1 

ループ内の印刷コマンドは、(最初の 6 回の反復で) 次のような結果をもたらします。

    24
    0

    22
    1

    24
    2

    27
    3

    113
    4

    4
    5

senti_pos_valueoutput_rowindex_listはどちらも整数値です。後者は、ループ内の反復ごとに 1 ずつ厳密に増加しています。

senti_pos_value自体は、さらに多くの複雑な操作 (約 400 行のコード) に基づいて任意に変更されます。ただし、最終結果は常に整数です。

したがって、すべての senti_pos_values を行ごとに同じ列に書き込みたいと思います。これまでのところ、このような問題は発生していませんが、最終的にコードが機能しないことが判明しました。ほとんど何も書き込まれず、Column1 の数値はゼロのままです (以下を参照)。

また、私は次のことを試しました:

 df.loc[output_rowindex_list,'Column1'] = senti_pos_value

と:

 df.set_value(output_rowindex_list,'Column1',senti_pos_value)

どちらも成功しません...受信した両方、つまりループ内の特定のアウトラインの 1 つ: output_rowindex_list = 113 および senti_pos_value = 4

  TypeError: cannot do index indexing on <class 'pandas.tseries.index.DatetimeIndex'> with these indexers [113] of <type 'int'>

上記のとおり: df.iloc[output_rowindex_list,df.columns.get_loc('Column1')]=senti_pos_value

ブレークポイントを設定して関連するコード行を手動で入力してもエラーは返されませんが、最終的なデータフレームは残念ながら私の列では次のようになります (print-command で表示されるのと同じ入力を参照します):

    Column1
    4
    0
    0
    0
    0
    0

また、ブレークポイントをまったく設定せずにどのコマンドを使用しても、コードは常に壊れることなく機能することに注意してください。この場合、結果は常に上記の列 1 のとおりです。

私はパンダにそれほど慣れていませんが、それを理解するのに何時間もかかり、理由がわかりません...どんな助けも大歓迎です!

4

0 に答える 0