我试图找到一种更有效的方法,Column在单独的值中为基于值的值分配值Column。对于df下面的内容,我想分配一个0工作日和1周末。
这是我的尝试:
import pandas as pd
import numpy as np
d = ({
'Day' : ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'],
})
df = pd.DataFrame(data=d)
df['Group'] = np.where(df['Day'] == 'Monday', 0, 1)
df['Group'] = np.where(df['Day'] == 'Tuesday', 0, 1)
df['Group'] = np.where(df['Day'] == 'Wednesday', 0, 1)
df['Group'] = np.where(df['Day'] == 'Thursday', 0, 1)
df['Group'] = np.where(df['Day'] == 'Friday', 0, 1)
df['Group'] = np.where(df['Day'] == 'Saturday', 1, 0)
df['Group'] = np.where(df['Day'] == 'Sunday', 1, 0)
Output:
Day Group
0 Monday 0
1 Tuesday 0
2 Wednesday 0
3 Thursday 0
4 Friday 0
5 Saturday 0
6 Sunday 1
Intended Output:
Day Group
0 Monday 0
1 Tuesday 0
2 Wednesday 0
3 Thursday 0
4 Friday 0
5 Saturday 1
6 Sunday 1
解决办法:每次执行操作时df['Group'] = np.where(...),都要Group从头开始设置列的值。因此,在您的一系列陈述中,唯一真正重要的是最后一个:
df['Group'] = np.where(df['Day'] == 'Sunday', 1, 0)
要解决此问题,您可以一次设置Group列的所有值:
import pandas as pd
import numpy as np
d = ({
'Day' : ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'],
})
df = pd.DataFrame(data=d)
df['Group'] = np.where(df['Day'].isin(['Saturday', 'Sunday']), 1, 0)
Output:
Day Group
0 Monday 0
1 Tuesday 0
2 Wednesday 0
3 Thursday 0
4 Friday 0
5 Saturday 1
6 Sunday 1








暂无数据