所以我尝试使用多个选项来使用列表在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]
以上方法均无效。有人知道这可能会有用吗?
答案 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'] = ''
。