0

我有这个数据框

数据框

我想复制 ( ) 的所有行,这些重复的行用 148day_of_year == 140替换列。day_of_year

也就是说,复制行并同时替换 day_of_year 列并给出值 148

我正在使用 vaex

有人能帮我吗?

4

1 回答 1

1

让我们从一些假数据开始:

>>> 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
于 2020-11-04T09:14:21.707 回答