15
我正在分析一個形狀與以下示例類似的數據集。我有兩個不同類型的數據(ABC數據和XYZ數據):使用.map()有效創建pandas DataFrame中的其他列使用.map()
abc1 abc2 abc3 xyz1 xyz2 xyz3
0 1 2 2 2 1 2
1 2 1 1 2 1 1
2 2 2 1 2 2 2
3 1 2 1 1 1 1
4 1 1 2 1 2 1
我想創建一個函數,對於存在於數據幀的每個ABC欄增加了一個歸類列。使用列名稱和類別映射字典列表,我能夠得到我想要的結果。
abc_columns = ['abc1', 'abc2', 'abc3']
xyz_columns = ['xyz1', 'xyz2', 'xyz3']
abc_category_columns = ['abc1_category', 'abc2_category', 'abc3_category']
categories = {1: 'Good', 2: 'Bad', 3: 'Ugly'}
for i in range(len(abc_category_columns)):
df3[abc_category_columns[i]] = df3[abc_columns[i]].map(categories)
print df3
最終結果是:
abc1 abc2 abc3 xyz1 xyz2 xyz3 abc1_category abc2_category abc3_category
0 1 2 2 2 1 2 Good Bad Bad
1 2 1 1 2 1 1 Bad Good Good
2 2 2 1 2 2 2 Bad Bad Good
3 1 2 1 1 1 1 Good Bad Good
4 1 1 2 1 2 1 Good Good Bad
雖然for
循環結束時工作得很好,我覺得我應該使用Python的lambda
功能,但似乎無法推測出來。
有沒有更有效的方法來映射動態數字abc -type columns?
安迪,非常感謝! –
@AndyHayden,數據框上的.applymap和熊貓數據框上的.map之間有什麼區別? – yoshiserry
@yoshiserry applymap將它應用於每個單元格,而不是每行/列。 –