热线电话:13121318867

登录
2019-03-04 阅读量: 694
在单独的列中分配基于列的新值

我试图找到一种更有效的方法,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

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子