【问题标题】:Use condition in a dataframe to replace values in another dataframe with nan在数据框中使用条件将另一个数据框中的值替换为 nan
【发布时间】:2022-01-01 22:56:49
【问题描述】:

我有一个数据框,其中包含一组样本的浓度值,如下所示:

Sample Ethanol Acetone Formaldehyde Methane
A 20 20 20 20
A 30 23 20 nan
A 20 23 nan nan
A nan 20 nan nan
B 21 46 87 54
B 23 74 nan 54
B 23 67 nan 53
B 23 nan nan 33
C 23 nan nan 66
C 22 nan nan 88
C 22 nan nan 90
C 22 nan nan 88

我有第二个数据框,其中包含第一个数据框中未丢失的浓度值的比例:

Sample Ethanol Acetone Formaldehyde Methane
A 0.75 1 0.5 0.25
B 1 0.75 0.25 1
C 1 0 0 1

当第二个数据帧中的条件为 0.5 或更低时,我想用 nan 替换第一个数据帧中的值。因此,生成的数据框如下所示。任何帮助都会很棒!

Sample Ethanol Acetone Formaldehyde Methane
A 20 20 nan nan
A 30 23 nan nan
A 20 23 nan nan
A nan 20 nan nan
B 21 46 nan 54
B 23 74 nan 54
B 23 67 nan 53
B 23 nan nan 33
C 23 nan nan 66
C 22 nan nan 88
C 22 nan nan 90
C 22 nan nan 88

【问题讨论】:

  • 首先,到目前为止,您尝试了什么?接下来,您能否给出一个单元格的结果并解释如何获得正确的值?
  • 到目前为止,我只设法从第一个数据帧生成第二个数据帧。我不知道如何开始第二部分......任何关键字,我可以在数据框的列和行上寻找迭代的地方都会很棒!
  • 如果不清楚,当第二个数据帧中的值等于或低于 0.5 时,我想用 nan 替换第一个数据帧中的值。所以这意味着替换样品 A + 甲醛 = nan、样品 B + 甲醛 = nan 和样品 A + 甲烷 = nan 的值。
  • 我已经更新了我原来的问题,使其更加清晰。
  • 好的。我想我明白了:)你能检查我的答案吗?

标签: pandas dataframe replace nan


【解决方案1】:

这是你要找的东西吗:

>>> df2.set_index('Sample').mask(lambda x: x <= 0.5) \
       .mul(df1.set_index('Sample')).reset_index()

   Sample  Ethanol  Acetone  Formaldehyde  Methane
0       A     15.0    20.00           NaN      NaN
1       A     22.5    23.00           NaN      NaN
2       A     15.0    23.00           NaN      NaN
3       A      NaN    20.00           NaN      NaN
4       B     21.0    34.50           NaN     54.0
5       B     23.0    55.50           NaN     54.0
6       B     23.0    50.25           NaN     53.0
7       B     23.0      NaN           NaN     33.0
8       C     23.0      NaN           NaN     66.0
9       C     22.0      NaN           NaN     88.0
10      C     22.0      NaN           NaN     90.0
11      C     22.0      NaN           NaN     88.0

【讨论】:

  • 好答案,超级。
  • 谢谢!这非常有效!
  • 很高兴为您提供帮助!请考虑accept my answer,因为这解决了您的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-06-20
  • 2021-11-06
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多