如何在熊猫中通过警告将一列中的值分配给另一列

时间:2019-07-10 19:41:26

标签: python pandas

我有一个56列的熊猫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

关于如何在不收到警告通知的情况下执行此操作的任何想法?谢谢。

1 个答案:

答案 0 :(得分:3)

fillna

这就是您应该如何做。将字典传递到fillna,以指定每列要填充的内容。字典的键映射到列名。因此,在下面,用'Longitude'中的相应值填充df.x2列的缺失值。

df.fillna({'Longitude': df.x2, 'Latitude': df.y2})

loc

但是要回答您的问题并禁止其他任何问题。

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