如何将一个单元格的值更改为另一单元格(熊猫)的值

时间:2019-08-25 06:03:10

标签: python

我试图通过从datetime列中的每个日期中减去一个月,然后将过去日期中的列值分配给当前日期来创建一些滞后特征。

这是我的代码:

for row_index in range(0,len(merger)):
    date = merger.loc[merger.index[row_index],'datetime']
    prev = subtract_one_month(date)
    inde = merger.loc[merger['datetime'] == str(prev),'count'].index.values.astype(int)
    if inde == []:
        continue
    else:
        inde = inde[0]
    merger.loc[merger.index[row_index], 'count_lag_month'] = 
    merger.loc[merger.index[inde], 'count']

内部if else循环用于处理我要查找的日期不存在的情况。

上面的代码只是给我列出了NaN。我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我更改了

first = []
mean = []
wrkday = []
count = []

for row_index in range(0,len(merger)):
    print(row_index)
    date = merger.loc[merger.index[row_index],'datetime']  
    prev = subtract_one_month(date)
    inde = merger.loc[merger['datetime'] == str(prev)].index.values.astype(int)
    if inde.size == 0:
        first.append(0)
        mean.append(0)
        wrkday.append(0)
        continue
    else:
        inde = inde[0]
        first.append(merger.loc[merger.index[inde], 'count'])
        mean.append(merger.loc[merger.index[inde], 'monthly_mean_count'])
        wrkday.append(merger.loc[merger.index[inde], 'monthly_wrkday_mean_count'])
    prev_day = subtract_one_day(date)
    inde = merger.loc[merger['datetime'] == str(prev_day)].index.values.astype(int)
    if inde.size == 0:
        count.append(0)
        continue
    else:
        inde = inde[0]
        count.append(merger.loc[merger.index[inde], 'count'])      

merger['count_lag_month'] = first
merger['monthly_mean_count_lag_month'] = mean
merger['monthly_wrkday_mean_count_lag_month'] = wrkday
merger['count_lag_day'] = count

它改为使用列表,并且运行速度似乎不错。我不确定这是否是最好的方法。