首页 > 解决方案 > 创建新的 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

标签: pythonpandasfinance

解决方案


如果存在矢量化替代方案,请不要在 pandas 中循环,这里可以使用isin布尔掩码并转换为整数以True/False进行1/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)

推荐阅读