我有一个包含 56 列的 pandas DF。其中 2 列(X 和 Y)为空,我想复制存储在同一个 DF 中的 2 个不同列中的值。现在,我设法做到了,但我收到警告:
试图在 DataFrame 的切片副本上设置一个值。 尝试使用 .loc[row_indexer,col_indexer] = value 代替
我也试过这个版本,但仍然收到警告。到目前为止,这是我的语法:
subset = df[(df.Longitude.isnull()) & (df.Latitude.isnull())]
subset.Longitude = subset.x2
subset.Latitude = subset.y2
关于如何在没有收到警告通知的情况下执行此操作的想法?谢谢。
最佳答案
填充
这就是你应该做的。将字典传递给 fillna
,指定用什么填充每一列。字典的键映射到列名。因此,在下面,用 df.x2
中的相应值填充 'Longitude'
列的缺失值。
df.fillna({'Longitude': df.x2, 'Latitude': df.y2})
位置
但要回答您的问题并排除任何其他问题。
mask = df.Longitude.isna() & df.Latitude.isna()
df.loc[mask, ['Longitude', 'Latitude']] = df.loc[mask, ['x2', 'y2']].to_numpy()
不是很有用
因为大多数人觉得这很难阅读
mask = df.Longitude.isna() & df.Latitude.isna()
df.loc[mask, 'Longitude'], df.loc[mask, 'Latitude'] = map(df.get, ['x2', 'y2'])
df
关于python - 如何将值从 1 列分配给另一列并在 Pandas 中发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56977605/