Это не сработает, Python просто не поддерживает этот вид синтаксиса, т. Е. Присваивает вызовы функций.Кроме того, drop
возвращает копию, поэтому удаление столбца и работа с возвращенным фреймом данных не изменяет оригинал.
Ниже приведено несколько вариантов, с которыми вы можете работать.
loc
+ pd.Index.difference
Здесь вам нужно присвоение на основе loc
:
df_test.loc[rows, df_test.columns.difference(['two'])] = np.nan
df_test
one two three
a NaN 0.205799 NaN
b 0.296389 -0.508247 0.026844
c 0.970879 -0.549491 -0.056991
d -1.474168 -1.694579 1.493165
e NaN -0.159641 NaN
loc
работает на месте, изменяя исходный DataFrame по своему усмотрению.Вы также можете заменить df_test.columns.difference(['two'])
на ['one', 'three']
, если хотите.
df.set_value
Для более старых версий панд вы можете использовать df.set_value
(не на месте)) -
df_test.set_value(df_test.index[rows], df_test.columns.difference(['two']), np.nan)
one two three
a NaN 1.562233 NaN
b -0.755127 -0.862368 -0.850386
c -0.193353 -0.033097 1.005041
d -1.679028 1.006895 -0.206164
e NaN -1.376300 NaN