猿问

熊猫:根据它们所属的数字范围重命名列中的值?

我有一个数据框,其中包含一堆数字,范围从 1 到 100。我想拆分这些值,以便如果值介于 1 到 10 之间,则将它们替换为 0。如果值介于 11 到 20 之间,它们被替换为 1。如果值介于 21 - 30 之间,则它们被替换为 2,依此类推。

我怎样才能用 Pandas 做到这一点?

我试过的:

dating["attr1_1"] = dating["attr1_1"][0:11] = 0
dating["attr1_1"] = dating["attr1_1"][11:21] = 1


皈依舞
浏览 123回答 3
3回答

守候你守候我

您可以使用 binning 过程pd.cut()。import pandas as pd a = pd.Series(range(1,100)) pd.cut(a, bins=[1,11,21,31,41,51,61,71,81,91,101], labels=False, right=False)

小怪兽爱吃肉

您可以像这样在所有列上应用:df.apply(lambda x: x-1 // 10)这是调用底数除法:2.9 变为 2,1.8 变为 1 等。由于在您的情况下 30 应变为 2,因此我们在应用底数除法之前从值中减去 1。

白板的微信

您可以创建一个函数来执行操作并将其作为 .apply() 的参数传递。例如:def function_name(rows):&nbsp; &nbsp; if row > 0 and row <= 10:&nbsp; &nbsp; &nbsp; &nbsp; return 0&nbsp; &nbsp; elif othercases ...for cols in df.columns: # loop over all columns in your dataframe&nbsp; &nbsp; df[cols] = df[cols].apply(function_name)
随时随地看视频慕课网APP

相关分类

Python
我要回答