Pandas用列表设置单元格的值范围

时间:2018-03-13 03:15:12

标签: python pandas

所以我尝试使用多个选项来使用列表在Pandas中设置多个单元格的值,但是无法获得正确的结果。在这里和谷歌搜索没有运气。 这是我的样本df

df = pd.DataFrame({'PersonID':['AB-123', 'AB-123', 'AB-123', 'AB-123', 'AB-123'],
'Date':['2/1/2016', '2/2/2016', '2/3/2016', '2/4/2016', '2/5/2016']})
df['Score']=''

我正在努力在“得分”中间增加价值。专栏并尝试以下方式;

选项1:使用set_value

df = df.set_value([3:5],'Score',[3,4,5])

由于切片和值列表而无法正常工作。

选项2:

df.loc[3:5,'Score']=[3,4,5]

与上述相同的问题

选项3:

df[df.index[3:5]]['Score']=[3,4,5]

以上方法均无效。有人知道这可能会有用吗?

2 个答案:

答案 0 :(得分:2)

我不确定为什么需要这个,使用numpy.r_

import numpy as np
df.loc[np.r_[2:5],'Score']=[3,4,5]
df
Out[307]: 
       Date PersonID  Score
0  2/1/2016   AB-123    NaN
1  2/2/2016   AB-123    NaN
2  2/3/2016   AB-123    3.0
3  2/4/2016   AB-123    4.0
4  2/5/2016   AB-123    5.0

答案 1 :(得分:1)

您可以让pandas为您处理索引对齐。

df['Score'] = pd.Series([3, 4, 5], index=np.r_[2:5])
df

       Date PersonID  Score
0  2/1/2016   AB-123    NaN
1  2/2/2016   AB-123    NaN
2  2/3/2016   AB-123    3.0
3  2/4/2016   AB-123    4.0
4  2/5/2016   AB-123    5.0

np.r_在这里使用与Wen的答案相同的效果。注意;如果使用此方法,则不需要像当前那样预先初始化df['Score'] = ''