当前位置: 首页 > 知识库问答 >
问题:

如何通过在python中添加同一列的两个不同行值来插补特定行值

廉宇
2023-03-14

我有一个数据框,如下所示:

 df = {'col1': {0: 'v1',
  1: 'v2',
  2: 'v3',
  3: 'v4'},
 'col2': {0: np.nan,
  1: 13,
  2: 76,
  3: 2},
 'col3': {0: np.nan,
  1: 91,
  2: 3,
  3: 33},
 'col4': {0: np.nan,
  1: 9,
  2: 47,
  3: 62}}

我想通过添加与“val2”和“val4”相关联的值来替换与col1的“Val1”相关联的所有“nan”值,并将其填入col2、col3和col4中。

因此,预期输出将如下所示-

  |    col1  col2   col3  col4
---------------------------------------
0 |   "v1"  15    124    71
1 |   "v2"  13    91     9
2 |   "v3"  76    3      47
3 |   "v4"  2     33     62

共有1个答案

怀经赋
2023-03-14

尝试与loc

import numpy as np
import pandas as pd

df = pd.DataFrame({'col1': {0: 'v1', 1: 'v2', 2: 'v3', 3: 'v4'},
                   'col2': {0: np.nan, 1: 13, 2: 76, 3: 2},
                   'col3': {0: np.nan, 1: 91, 2: 3, 3: 33},
                   'col4': {0: np.nan, 1: 9, 2: 47, 3: 62}})

value_cols = ['col2', 'col3', 'col4']

# Sum and Assign Data
df.loc[df.col1.eq("v1"), value_cols] = \
    df.loc[df.col1.eq('v2') | df.col1.eq('v4'), value_cols].sum().values

# Fix Types
df[value_cols] = df[value_cols].astype(int)
print(df)

df

  col1  col2  col3  col4
0   v1    15   124    71
1   v2    13    91     9
2   v3    76     3    47
3   v4     2    33    62
 类似资料:
  • 我有一个结构如下的dataframe(摘要示例,不是实际的) 我希望使用dplyr、group_by(MedID)和mutate在新的数据帧中添加一列(我们在df2中将其称为Flag2),这样在每个病人(MedID)中,对于唯一MedID中的每个后续行,df2$Flag2列==1,但仅在df1$Flag2列==99之后,否则df2$Flag2列得到0。如果MedID的第一行中df1$flag==9

  • 我试图让发送消息给另一方的用户和接收消息的用户在每行的一行中。 那么oracle sql查询应该是什么呢

  • 批量订单 Purchorder 我已经试了一个星期了。我有这两个表,batchporder和purchord在batchporder表中,我需要插入一行,并获得传递给purchord插入的主id。在purchord中,我需要插入多行,因此我使用了insert\u batch。 控制器 模型 错误1 遇到PHP错误严重性:警告 消息:array_keys()要求参数1为数组,字符串为给定值 文件名:

  • 我得到了一个表从SELECT查询1如下从SQL服务器: 我从SQL Server的SELECT query 2中获得了一个表,如下所示: 我想将这些SELECT查询加入到一个SELECT查询中,如下所示: 我试着这样: 但它不起作用,这不是我想要加入的实际表。 基本上,我想连接两个具有相同列名但它们之间没有公共值的SELECT查询。我想使用连接表中的SELECT查询。 提前谢谢你。

  • 问题内容: 假设我有一个名为example的表格,如下所示: [abc] | [def] --1 — | -qwerty- --2 — | -asdf — 我想要做的是在一个SQL查询中更新两个列(仅使用一个UPDATE)。 以上是我要实现的内容,但是在一行sql中(使用MySQL)。我知道您可以这样做,但是我不确定如何使用两个不同的where语句来做到这一点。 问题答案: 您可以使用( mysq

  • 我有两个数据。表X和表Y。 列 X: Y 中的值列: 创建两个data.tables: 我设置了 X 和 Y 的键: 现在,我尝试通过X中的< code>id和Y中的< code>ID来连接X和Y: All引发错误,指出参数中的列名无效。 我查阅了data.table的手册,发现< code>merge函数不支持< code>by.x和< code>by.y参数。 如何在不更改列名的情况下通过不同