我有一個資料框,日期時間索引,一列包含數字,如下所示:
No
2020-01-01 200
2020-01-02 15000
2020-01-03 950
2020-01-04 170000
2020-01-05 29000
2020-01-06 46500
...
我需要創建另一列類別,我們稱之為“貓”,它由 0,1 或 2 填充,具體取決于“否”的值是 <10000、>=10000 和 <100000 還是 >=100000,分別。所以我希望它是這樣的:
No cat
2020-01-01 200 0
2020-01-02 15000 1
2020-01-03 950 0
2020-01-04 170000 2
2020-01-05 29000 1
2020-01-06 46500 1
...
到目前為止,我已經嘗試填充一個空串列,然后使用以下代碼將其添加為 df.cat 的值:
cat = []
for i in df.No:
if i >= 100000:
cat = 2
elif (i>10000) & (i<100000):
cat = 1
else:
cat = 0
df.cat = cat
謝謝!
uj5u.com熱心網友回復:
使用np.select. 檢查gt和lt,并default設為 1(介于兩者之間):
import pandas as pd
import numpy as np
data = {'No': {'2020-01-01': 200, '2020-01-02': 15000, '2020-01-03': 950,
'2020-01-04': 170000, '2020-01-05': 29000, '2020-01-06': 46500}}
df = pd.DataFrame(data)
condlist = [df.No.gt(100000),
df.No.lt(10000)]
choicelist = [2, 0]
df['cat'] = np.select(condlist, choicelist, default=1)
print(df)
No cat
2020-01-01 200 0
2020-01-02 15000 1
2020-01-03 950 0
2020-01-04 170000 2
2020-01-05 29000 1
2020-01-06 46500 1
uj5u.com熱心網友回復:
使用pandas.cut:
bins = [0, 10000, 100000, float('inf')]
df['cat'] = pd.cut(df['No'], bins=bins, labels=range(len(bins)-1))
變體cat.codes:
bins = [0, 10000, 100000, float('inf')]
df['cat'] = pd.cut(df['No'], bins=bins).cat.codes
輸出:
No cat
2020-01-01 200 0
2020-01-02 15000 1
2020-01-03 950 0
2020-01-04 170000 2
2020-01-05 29000 1
2020-01-06 46500 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517984.html
上一篇:bash:如果目錄中存在匹配特定模式的填充,則洗掉它們
下一篇:根據索引/變數更改小部件的顏色
