问题描述
我有这个数据框
我想复制(day_of_year == 140
)的所有行,这些重复的行用148取代了day_of_year
列。
也就是说,复制行,并同时替换day_of_year列并给出值148
我正在使用vaex
有人可以帮我吗?
解决方法
让我们从一些虚假数据开始
>>> import vaex
>>> import numpy as np
>>> x = [0,1,2,140,4,4]
>>> df = vaex.from_arrays(x=x)
>>> df['y'] = df.x**2
>>> df
# x y
0 0 0
1 1 1
2 2 4
3 140 19600
4 140 19600
5 140 19600
6 4 16
7 4 16
现在,我们将生成仅包含x==140
行的过滤后数据框,然后将其替换为其他值。请注意,由于数据在Vaex中是不变的,因此我们不分配,而是使用where。
>>> df_replace = df[df.x==140]
>>> df_replace['x'] = (df_replace.x==140).where(148,-1)
>>> df_replace
# x y
0 148 19600
1 148 19600
2 148 19600
请注意,虚拟列y仍在使用以前的x值,不会改变。
现在我们只需要concatenate个
>>> df_new = df.concat(df_replace)
>>> df_new
# x y
0 0 0
1 1 1
2 2 4
3 140 19600
4 140 19600
... ... ...
6 4 16
7 4 16
8 148 19600
9 148 19600
10 148 19600