0

我在相当大的代码中遇到了一个奇怪的问题。通常,我使用 .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_valueoutput_rowindex_list都是整数值。对于循环中的每次迭代,后者都严格增加一。

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)

也没有成功...对于我收到的两个,即循环中的一个特定大纲: 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

设置断点并手动输入相关代码行时不会返回任何错误,但不幸的是,我的列的最终数据帧看起来像这样(引用与打印命令显示的相同输入):

    Column1
    4
    0
    0
    0
    0
    0

另外,请注意,无论我在根本没有设置断点的情况下使用哪个命令,代码始终可以正常工作而不会中断。在这种情况下,结果始终如上文第 1 列所述。

我对熊猫并不陌生,但我花了几个小时才弄清楚,我根本看不出原因......任何帮助都非常感谢!

4

0 回答 0