我有这个数据框
我想复制 ( ) 的所有行,这些重复的行用 148day_of_year == 140
替换列。day_of_year
也就是说,复制行并同时替换 day_of_year 列并给出值 148
我正在使用 vaex
有人能帮我吗?
让我们从一些假数据开始:
>>> import vaex
>>> import numpy as np
>>> x = [0, 1, 2, 140, 140, 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
,并用不同的值替换它们。请注意,我们没有分配,而是使用where,因为数据在 Vaex 中被认为是不可变的。
>>> 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 值,它没有改变。
现在我们只需要连接它们:
>>> 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