gpt4 book ai didi

python - 根据其他数据帧的条件提取数据帧的元素

转载 作者:行者123 更新时间:2023-12-01 00:34:42 25 4
gpt4 key购买 nike

我相信我的问题非常简单,并且一定有一个非常简单的方法来解决这个问题,但是由于我对Python,特别是pandas还很陌生,我无法自己解决它。

我编写了以下数据框,它代表了我一直在研究的更简单的场景。解释的长度可能会让人感到害怕,但我只是想让它尽可能清楚。所以,请考虑:

import pandas as pd

data = pd.DataFrame({'Column 1': [300,300,450,500,500,750,600,300, 150],
'Column 2': [100,130,230,200,300,350,600,550,530],
'Column 3': [250, 300, 400, 500, 700,
350, 750, 550, 600]})

df_validate_1 = pd.DataFrame({'Column 1': [1,0,1,1,1,1,1,1, 1],
'Column 2': [1,1,1,1,1,0,0,1,1],
'Column 3': [0, 1, 1, 1, 1,
1, 1, 1, 0]})

df_validate_2 = pd.DataFrame({'Column 1': [1,1,1,1,1,0,1,1,1],
'Column 2': [1,1,0,1,1,1,0,0,0],
'Column 3': [0, 0, 1, 1, 0,
1, 1, 0, 0]})

df_validate_3 = pd.DataFrame({'Column 1': [1,1,1,0,0,1,1,1,1],
'Column 2': [1,1,1,1,1,1,1,0,0],
'Column 3': [0, 0, 0, 1, 1,
1, 1, 1, 1]})

我有一个主数据帧和 3 个不同的数据帧用于验证,它们只有 1 或 0(真或假)。我正在寻找的是找到一种方法,从数据帧“数据”中创建一个数据帧,该数据帧由其他三个验证数据帧的条件组成,其中我将仅计算“数据”数据帧中的元素对于其他三个数据帧,其各自的列和行对应于 1,如果验证数据帧上的任何相应位置有一个零,我将认为它是 NaN。

简要解释一下我在实践中想要什么:“data”数据帧中第 2 列的第一个元素是 100。对于 df_validate_1、df_validate_2 和 df_validate_3,第二列的第一个元素是 1。因此,我会将值传递到新数据帧。另一方面,第 1 列的第二个元素是 300,但是对于这种情况,df_validate_1 相应位置上的元素为 0(即使对于同一位置 df_validate_2 和 df_validate_3 为 1),因此,我想将其写为 NaN。

我期待以下结果:

  Column 1 Column 2 Column 3
0 300 100 NaN
1 NaN 130 NaN
2 450 NaN NaN
3 NaN 200 500
4 NaN 300 NaN
5 NaN NaN 350
6 600 NaN 750
7 300 NaN NaN
8 150 NaN NaN

当然,我面临着一种更复杂的解决方案,这是一个虚构的示例。从今以后,我正在寻找一种优雅的解决方案,可以将其应用到更强大的场景中。

希望我能够做到简洁而准确。我非常感谢您在这方面的帮助!

最佳答案

给定您的数据框:

  • 将它们全部加在一起
    • 保留0或将其替换为np.nan
import pandas as pd
import numpy as np

data_updated = data * df_validate_1 * df_validate_2 * df_validate_3

data_updated.replace(0, np.NaN, inplace=True)

输出:

 Column 1  Column 2  Column 3
300.0 100.0 NaN
NaN 130.0 NaN
450.0 NaN NaN
NaN 200.0 500.0
NaN 300.0 NaN
NaN NaN 350.0
600.0 NaN 750.0
300.0 NaN NaN
150.0 NaN NaN

关于python - 根据其他数据帧的条件提取数据帧的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57892561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com