这是我的代码段。该代码有效,但是,出现以下错误:

“试图在DataFrame的切片副本上设置一个值”

我猜这是由于某些不赞成使用的语法...

new_data['mon_fri'] = 0
for i in range(0,len(new_data)):
    if (new_data['Dayofweek'][i] == 0 or new_data['Dayofweek'][i] == 4):
        new_data['mon_fri'][i] = 1
    else:
        new_data['mon_fri'][i] = 0

最佳答案

如果存在矢量化的替代方案,请不要在熊猫中循环,这里可以对布尔掩码使用isin,对True/False1/0映射使用强制转换为整数:

new_data['mon_fri'] = new_data['Dayofweek'].isin([0,4]).astype(int)


或使用numpy.where

new_data['mon_fri'] = np.where(new_data['Dayofweek'].isin([0,4]), 1, 0)

关于python - 创建新的Dataframe数据切片问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54842044/

10-12 21:48