我意識到這是一種非常低效的編碼方式,所以我希望有人會對更有效的方法提出建議。
本質上,我正在嘗試創建一個列(“freq”),NA 和“Nothing”物件的值為 0,否則為 1。樣本df:
i obj freq
0. Nothing 0
1. Something 1
2. NaN 0
3. Something 1
for i in range(0,len(df)):
if str(df["obj"].iloc[i]) == "Nothing" or str(df["obj"].iloc[i]) == NaN:
d["freq"].iloc[i] = 0
else:
df["freq"].iloc[i] = 1
uj5u.com熱心網友回復:
您可以使用 np.where()
import pandas as pd
import numpy as np
df = pd.DataFrame({'obj': {0: 'Nothing', 1: 'Something', 2: np.nan, 3: 'Something'}})
df['freq'] = np.where((df['obj'] == 'Nothing') | (df['obj'].isnull()), 0, 1)
uj5u.com熱心網友回復:
沒有資料框很難檢查是否有效,但它應該
indexer = (df['obj'] == 'Nothing') | (df['obj'].astype(str) == 'NaN')
df.loc[indexer, 'freq'] = 0
df.loc[~indexer, 'freq'] = 1
uj5u.com熱心網友回復:
在這種情況下,甚至沒有必要使用numpy:
df['freq'] = (~(df.obj.isnull() | (df.obj == 'Nothing'))) * 1
筆記:
用“0”和“1”編碼有用嗎?我們不能保持布爾運算的結果保持“假”和“真”值嗎?如果是這種情況,答案將是:
df['freq'] = ~(df.obj.isnull() | (df.obj == 'Nothing'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443055.html
上一篇:使用groupby繪制條形圖
下一篇:資料幀轉置后對值進行排序
