Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas dataframe在不设置CopyWarning的情况下选择行然后修改列的最佳方法是什么_Pandas - Fatal编程技术网

Pandas dataframe在不设置CopyWarning的情况下选择行然后修改列的最佳方法是什么

Pandas dataframe在不设置CopyWarning的情况下选择行然后修改列的最佳方法是什么,pandas,Pandas,我有一个大型dataFrame对象,我想先选择一些行,然后转换时间戳列: def choose_loc(data, lat, lon, lat_diff, lon_diff): data = data.loc[(data.lat > (lat - lat_diff)) & (data.lat < (lat + lat_diff)) & (data.lon > (lon - lon_diff)) & (data.lon < (lon + l

我有一个大型dataFrame对象,我想先选择一些行,然后转换时间戳列:

def choose_loc(data, lat, lon, lat_diff, lon_diff):

    data = data.loc[(data.lat > (lat - lat_diff)) & (data.lat < (lat + lat_diff)) & (data.lon > (lon - lon_diff)) & (data.lon < (lon + lon_diff))]

    return data


column_names = np.genfromtxt(header_path, dtype=str, delimiter='\t')
dtypes = {"lat": np.float64, "lon": np.float64, "timeStamp": np.int64}
pos_lat = 0.0
pos_lon = 0.0
size_lat = 0.05
size_lon = 0.05

data = pd.read_csv(filePath, sep='\t', dtype=dtypes, header=None, names=column_names, error_bad_lines=False)

data = choose_loc(data, pos_lat, pos_lon, size_lat / 2, size_lon / 2)

data.loc[:, 'timeStamp'] =  pd.to_datetime(data.loc[:, 'timeStamp'], unit='ms')
def选择位置(数据、纬度、经度、纬度差、经度差):
data=data.loc[(data.lat>(lat-lat_diff))和(data.lat<(lat+lat_diff))和(data.lon>(lon-lon_diff))和(data.lon<(lon+lon_diff))]
返回数据
列名称=np.genfromtxt(标题路径,数据类型=str,分隔符='\t')
数据类型={“lat”:np.float64,“lon”:np.float64,“timeStamp”:np.int64}
位置=0.0
pos_lon=0.0
尺寸=0.05
尺寸=0.05
data=pd.read\u csv(文件路径,sep='\t',dtype=dtypes,header=None,names=column\u names,error\u bad\u lines=False)
数据=选择位置(数据、位置纬度、位置纬度、尺寸纬度/2、尺寸纬度/2)
data.loc[:,'timeStamp']=pd.to_datetime(data.loc[:,'timeStamp'],unit='ms')
当我运行上面的代码时,我在最后一行得到了设置,其中有copywarning。我真的不明白为什么,因为我使用.loc,所以不应该复制任何内容。我可以通过运行
data=choose_loc(data,…).copy()
使其工作,但文件很大,我希望避免复制以节省时间和内存。那我该怎么办呢?

试试这个:

data = data.loc[(data.lat > (lat - lat_diff)) & (data.lat < (lat + lat_diff)) & (data.lon > (lon - lon_diff)) & (data.lon < (lon + lon_diff))].copy()
data=data.loc[(data.lat>(lat-lat_diff))和(data.lat<(lat+lat_diff))和(data.lon>(lon-lon_diff))和(data.lon<(lon+lon_diff))。复制()

但是我用这种方式复制数据,我不需要以前的数据,我只想在一个切片上工作。