我有一個數據框,其中包含一堆數字,范圍從 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
3 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
您可以使用 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)

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
您可以像這樣在所有列上應用:
df.apply(lambda x: x-1 // 10)
這是調用底數除法:2.9 變為 2,1.8 變為 1 等。由于在您的情況下 30 應變為 2,因此我們在應用底數除法之前從值中減去 1。

白板的微信
TA貢獻1883條經驗 獲得超3個贊
您可以創建一個函數來執行操作并將其作為 .apply() 的參數傳遞。例如:
def function_name(rows):
if row > 0 and row <= 10:
return 0
elif othercases ...
for cols in df.columns: # loop over all columns in your dataframe
df[cols] = df[cols].apply(function_name)
添加回答
舉報
0/150
提交
取消