かなり大きなコードで奇妙な問題が発生しました。通常、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_valueとoutput_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 のとおりです。
私はパンダにそれほど慣れていませんが、それを理解するのに何時間もかかり、理由がわかりません...どんな助けも大歓迎です!