Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2个数据帧的条件语句_Python_Pandas_Numpy_Dataframe_Jupyter Notebook - Fatal编程技术网

Python 2个数据帧的条件语句

Python 2个数据帧的条件语句,python,pandas,numpy,dataframe,jupyter-notebook,Python,Pandas,Numpy,Dataframe,Jupyter Notebook,我在解决以下问题时遇到问题: 我在熊猫中有两个数据帧,第一个数据帧(df1)是关于我买了一整年的水果,下一个数据帧(df2)是关于水果的定价。现在的问题在于df1中的一些水果价格不正确。下面是一个例子: df1 = pd.DataFrame({'Fruits Bought Over a Year' : ['Apple', 'Apple', 'Apple', 'Apple', 'Orange', 'Watermelon',

我在解决以下问题时遇到问题:

我在熊猫中有两个数据帧,第一个数据帧(df1)是关于我买了一整年的水果,下一个数据帧(df2)是关于水果的定价。现在的问题在于df1中的一些水果价格不正确。下面是一个例子:

df1 = pd.DataFrame({'Fruits Bought Over a Year' : ['Apple', 'Apple', 'Apple', 'Apple', 'Orange', 'Watermelon',
                                      'Orange', 'Orange', 'Watermelon', 'Apple', 'Grapes', 
                                      'Watermelon', 'Grapes'],
       'Price': [5, 5, 4, 4.5, 3, 7, 2.5, 2, 6, 4, 1, 6, 2]})


df2 = pd.DataFrame({'Fruits' : ['Apple', 'Orange', 'Watermelon', 'Grapes'],
       'Fruits Price': [5, 3, 7, 2]})
我想做的是创建一个公式,可以评估(例如)如果df1中的苹果价格与df2中的价格不同,那么告诉我df2中的实际价格与df1中的错误价格之间的差异,并将其作为df1中的新列输入


示例:df1苹果成本为6,而df2中的实际价格苹果成本仅为5,现在差值为1,它将在df1中显示为一个名为“价格差异”的新列。

您可以尝试以下解决方案以获得结果:

  • 将df2的索引设置为FROUTS列
  • 将df2转换为字典
  • 使用上述字典,使用apply方法获取差异

  • 在第3步中,我们使用在第2步中创建的字典进行差异处理。

    您的示例数据不是数据帧的有效表示形式
    df1
    具有不同的长度值。@QuangHoang已更正。OP缺少一个逗号。
    df2 = df2.set_index('Fruits')
    
    di = df2.to_dict('index')
    
    df1['price difference'] = df1.apply(lambda row: abs(df1['Price'][row.name] - di[df1['Fruits Bought Over a Year'][row.name]]['Fruits Price']), axis=1)