我有一個 CSV 檔案,其中包含我想根據不同類別而不是顏色進行分類的專案串列。CSV 檔案是:
ITEM PRICE QUANTITY CATEGORY
0 Carrot 5 10 Orange
1 Potato 3 5 brown
2 Beans 2 6 red
3 Pizza 2 7 red
4 Salad 3 1 green
5 Burger 1 4 brown
6 Carrot 0 0 orange
7 Carrot 0 0 orange
8 Potato 0 0 brown
9 Beans 0 0 red
我寫的代碼是:
import pandas as pd
path = 'C:\\Users\\[username]\\.spyder-py3\\TestFileCSV.csv
df = pd.read_csv(path)
if df.loc[index, 'ITEM'] == 'Carrot':
df.loc[index, 'CATEGORY'] == 'VEGETABLE'
elif df.loc[index, 'ITEM'] == 'Beans':
df.loc[index, 'CATEGORY'] == 'Legumes'
else:
df.loc[index, 'CATEGORY'] == 'Check'
df.to_csv('TestFileCSV1.csv')
結果是我得到了一個新檔案 TestFileCSV1,其資料幀與原始 TestFileCSV 完全相同。這些類別都不是蔬菜或豆類。
謝謝!
編輯:為了澄清,我想遍歷串列而不是一次分配一個類別。我要分類的實際資料集一次是數千個專案。再次感謝你!
uj5u.com熱心網友回復:
首先,您使用 == 而不是 = 進行賦值。
您可以使用它來根據 ITEM 值分配 CATEGORY:
df.loc[df['ITEM'] == 'Carrot', 'CATEGORY'] = 'VEGETABLE'
uj5u.com熱心網友回復:
嘗試這個:
df['CATEGORY']= (df['ITEM'].apply(lambda x: 'VEGETABLE' if x=='Carrot'
else( 'Legumes' if x=='Beans' else 'Check')))
df
| 指數 | 物品 | 價格 | 數量 | 類別 |
|---|---|---|---|---|
| 0 | 蘿卜 | 5 | 10 | 蔬菜 |
| 1 | 土豆 | 3 | 5 | 查看 |
| 2 | 豆子 | 2 | 6 | 豆類 |
| 3 | 比薩 | 2 | 7 | 查看 |
| 4 | 沙拉 | 3 | 1 | 查看 |
| 5 | 漢堡包 | 1 | 4 | 查看 |
| 6 | 蘿卜 | 0 | 0 | 蔬菜 |
| 7 | 蘿卜 | 0 | 0 | 蔬菜 |
| 8 | 土豆 | 0 | 0 | 查看 |
| 9 | 豆子 | 0 | 0 | 豆類 |
uj5u.com熱心網友回復:
這個比較干凈,我覺得
# here we just map the values to the categories
def map(item):
mapping = {'Carrot':"Vegetable",'Beans':"Legumes"}
return map.get(item,"Check")
# apply, applies the map function to each value in x
df['CATEGORY'] = df.apply(lambda x: map(item = x['YEAR']), axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/481842.html
