更改列值Pandas Python LOC ILOC SETVALUE难度

时间:2016-08-06 16:45:41

标签: python pandas loc

我在相当大的代码中遇到了一个奇怪的问题。通常,我使用.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列所述。

我对大熊猫并不是那么新鲜,但我需要花费数小时才弄清楚它,我根本看不出原因......非常感谢任何帮助!

0 个答案:

没有答案