ant*_*thr 3 python vectorization pandas
我有一个数据框,我想用数组中的一些值更新一列。但是,该数组与数据帧的长度不同,但是我有要更新的数据帧行的索引。
我可以通过行(如下)循环来做到这一点,但我希望通过矢量化方法有一种更有效的方法来做到这一点,但我似乎无法获得正确的语法。
在下面的示例中,我只是填充列,nan然后直接通过循环使用索引。
df['newcol'] = np.nan
j = 0
for i in update_idx:
df['newcol'][i] = new_values[j]
j+=1
Run Code Online (Sandbox Code Playgroud)
如果你已经有一个索引列表,那么你可以loc用来执行标签(行)选择,你可以传递新的列名,在你现有的行未被选中的情况下,这些将NaN被分配:
df.loc[update_idx, 'new_col'] = new_value
Run Code Online (Sandbox Code Playgroud)
例子:
In [4]:
df = pd.DataFrame({'a':np.arange(5), 'b':np.random.randn(5)}, index = list('abcde'))
df
Out[4]:
a b
a 0 1.800300
b 1 0.351843
c 2 0.278122
d 3 1.387417
e 4 1.202503
In [5]:
idx_list = ['b','d','e']
df.loc[idx_list, 'c'] = np.arange(3)
df
Out[5]:
a b c
a 0 1.800300 NaN
b 1 0.351843 0
c 2 0.278122 NaN
d 3 1.387417 1
e 4 1.202503 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |