我在相当大的代码中遇到了一个奇怪的问题。通常,我使用.loc来更改循环中某个列中的特定项,同时使用row_index变量作为帮助。让我们假设有以下内容:
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的数字只保持为零(下面是c.f.)。
我也尝试了以下内容:
df.loc[output_rowindex_list,'Column1'] = senti_pos_value
和
df.set_value(output_rowindex_list,'Column1',senti_pos_value)
对于我收到的两个都没有成功,即对于循环中的一个特定轮廓: 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( '列1')] = senti_pos_value
设置断点并手动输入相关的代码行时,不会返回任何错误,但遗憾的是最终的数据帧对于我的列来说是这样的(指的是print-commmand所示的相同输入):
Column1
4
0
0
0
0
0
另外,请注意,无论我使用哪个命令而根本没有设置断点,代码总是可以正常工作而不会分手。在这种情况下,结果总是如上面第1列所述。
我对大熊猫并不是那么新鲜,但我需要花费数小时才弄清楚它,我根本看不出原因......非常感谢任何帮助!