复制行并更改列值python vaex

问题描述

我有这个数据框

dataframe

我想复制(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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...