更改数据系列中的值

Changing Values in a Data Series

我想更改数据框中一列中的值,以便实际更改我的数据。这就是我所做的:

cgc_data['return_sign'].apply(lambda val : 1.0 if val >= 0 else 0)

但这是我得到的:

cgc_data.groupby(['return_sign']).mean()

Price   1d ret  5d ret  10d ret 15d ret 3d sma  10d sma 10d ema
return_sign                             
-1.0    14.514507   -0.028492   -0.020618   -0.014593   -0.006056   14.819721   14.920520   14.882363
0.0 4.026313    0.000000    0.002574    0.007628    -0.004837   4.023833    3.922193    3.959923
1.0 14.979745   0.035238    0.044716    0.062569    0.079726    14.632116   14.462354   14.509330

我还有0。如何调整数据框?

试试这个:

cgc_data.loc[:,'return_sign'] = cgc_data.return_sign.apply(lambda val : 1.0 if val >= 0 else 0)

您需要将结果重新写入 return_sign 列。

你使用.apply功能后有没有返回数据。 试试这个:

cgc_data['return_sign'] = cgc_data['return_sign'].apply(lambda val : 1.0 if val >= 0 else 0)

然后继续下一步

如果您在单个列上操作,切勿使用 apply,因为它非常慢。而是使用 map

cgc_data['return_sign'] = cgc_data['return_sign'].map(lambda val : 1.0 if val >= 0 else 0)

希望对您有所帮助!!

您必须将值重新分配回原始数据框。

cgc_data['return_sign'] = np.where(cgc_data['return_sign'] >= 0, 1, 0)

此外,.apply 可以通过使用 np.where 的矢量化得到改进。