【发布时间】:2021-03-02 17:26:22
【问题描述】:
cats = {'lesson_name': {0: 'Mutt',
1: 'Ragdoll',
2: 'Black',
3: 'Calico',
4: 'Tortoise',
5: 'Mainecoon'},
'tag_list': {0: ['Orange', 'Black', 'White'],
1: ['Grey', 'White'],
2: ['Black','Brown'],
3: ['Orange','Grey','White'],
4: ['Orange', 'Brown','White'],
5: ['Grey','White']},
'Orange': {0: '',
1: '',
2: '',
3: '',
4: '',
5: ''},
'Black': {0: '',
1: '',
2: '',
3: '',
4: '',
5: ''},
'White': {0: '',
1: '',
2: '',
3: '',
4: '',
5: ''},
'Grey': {0: '',
1: '',
2: '',
3: '',
4: '',
5: ''},
'Brown': {0: '',
1: '',
2: '',
3: '',
4: '',
5: ''}}
cats_frame = pd.DataFrame(cats)
我正在尝试根据“tag_list”列中列表的顺序创建一个函数来附加颜色列(橙色、黑色、白色、灰色、棕色)。例如,如果“橙色”是 tag_list 中的第一种颜色,我希望该行在橙色列中有一个“1”,如果列表中的第二种颜色是“黑色”,我希望该行有一个“ 2' 在黑色列中。
我正在考虑为每种颜色制作一个函数并尝试过:
def black(df):
for (df['tag_list'],j) in df.iteritems():
if [j][0] == 'Black':
return 1
if [j][1] == 'Black':
return 2
if [j][2] == 'Black':
return 3
else:
return 0
cats_frame['Black'] = cats_frame.apply(black,1)
【问题讨论】: