向pandas数据框添加rank列时发出警告



我使用groupby派生了一个数据框架。

我正在尝试使用下面的代码基于'volume'列设置一个新的列'rank'。

代码正在工作,但给出警告-

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

下面是我的代码。因为我在Python/Pandas方面没有太多经验,所以希望得到指导。

filter_condition = ohlcv_m30_groupby_df['min_volume'] > cutoff_volume
min_100k_volume_df = ohlcv_m30_groupby_df[filter_condition]
# min_100k_volume_df.insert(len(min_100k_volume_df.columns), 'volume_rank', pd.Series([], dtype='int8'))
min_100k_volume_df.loc[:,'volume_rank'] = min_100k_volume_df['total_volume'].rank(ascending = False).astype(int)
print(min_100k_volume_df)

因为在您过滤您的数据框并分配给另一个变量名之后,即使您使用loc,您仍然使用浅副本。为了不得到警告,你应该像这样正确地复制数据帧。

min_100k_volume_df = ohlcv_m30_groupby_df[filter_condition].copy()

或者试试:

min_100k_volume_df = ohlcv_m30_groupby_df[filter_condition][:]

最新更新