所以我有一個超過 100 萬行的資料框
一列稱為“活動”,其編號從 1 到 12。我添加了一個名為“標簽”的新空列
根據列“活動”的值,“標簽”列需要填充 0 或 1
所以如果活動是1、2、3、6、7、8標簽將為0,否則為1
這是我目前正在做的事情:
df = pd.read_csv('data.csv')
df['label'] = ''
for index, row in df.iterrows():
if (row['activity'] == 1 or row['activity'] == 2 or row['activity'] == 3 or row['activity'] == 6 row['activity'] == 7 or row['activity'] == 8):
df.loc[index, 'label'] == 0
else:
df.loc[index, 'label'] == 1
df.to_cvs('data.csv', index = False)
這是非常低效的,并且需要很長時間才能運行。有什么優化嗎?可能使用numpy陣列?有什么方法可以讓代碼更干凈?
uj5u.com熱心網友回復:
numpy.where與 一起使用Series.isin:
df['label'] = np.where(df['activity'].isin([1, 2, 3, 6, 7, 8]), 0, 1)
或 通過反轉掩碼True, False映射到:0, 1
df['label'] = (~df['activity'].isin([1, 2, 3, 6, 7, 8])).astype(int)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424160.html
上一篇:對于二進制陣列sum(array)和numpy.count_nonzero(array)當陣列為uint8時,對于大陣列給出不同的答案。為什么?
