Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 如何根据其他数据帧计算数据帧中缺少的值_Python_Pandas - Fatal编程技术网

Python 如何根据其他数据帧计算数据帧中缺少的值

Python 如何根据其他数据帧计算数据帧中缺少的值,python,pandas,Python,Pandas,我希望找到数据帧中的值,而不是另一个数据帧中的值。 例如,我有这样一个数据帧: |---------------------| | Col1 | |---------------------| | 1111 | |---------------------| | 2222 | |---------------------| | 3333 | |-----------------

我希望找到数据帧中的值,而不是另一个数据帧中的值。 例如,我有这样一个数据帧:

|---------------------|
|      Col1           |
|---------------------|
|         1111        |
|---------------------|
|         2222        |
|---------------------|
|         3333        |
|---------------------|
|         4444        |
|---------------------|
|         5555        |
|---------------------|
|         6666        |
|---------------------|
|         7777        |
|---------------------|
|---------------------|
|      Col2           |
|---------------------|
|         1111        |
|---------------------|
|         2222        |
|---------------------|
|         3333        |
|---------------------|
|         4444        |
|---------------------|
另一个数据帧如下所示:

|---------------------|
|      Col1           |
|---------------------|
|         1111        |
|---------------------|
|         2222        |
|---------------------|
|         3333        |
|---------------------|
|         4444        |
|---------------------|
|         5555        |
|---------------------|
|         6666        |
|---------------------|
|         7777        |
|---------------------|
|---------------------|
|      Col2           |
|---------------------|
|         1111        |
|---------------------|
|         2222        |
|---------------------|
|         3333        |
|---------------------|
|         4444        |
|---------------------|
我想要这样的结果

|---------------------|
|      missing values |
|---------------------|
|         5555        |
|---------------------|
|         6666        |
|---------------------|
|         7777        |
|---------------------|
编辑 错误:

Traceback (most recent call last):
  File "C:/Users/haroo501/PycharmProjects/tool_check_nbr/my_missing_result.py", line 16, in <module>
    merged = esn_datafeed_df.merge(esn_inter_intra_merge_df, how='left', indicator=True)
  File "C:\Users\haroo501\PycharmProjects\tool_check_nbr\venv\lib\site-packages\pandas\core\frame.py", line 7336, in merge
    return merge(
  File "C:\Users\haroo501\PycharmProjects\tool_check_nbr\venv\lib\site-packages\pandas\core\reshape\merge.py", line 83, in merge
    return op.get_result()
  File "C:\Users\haroo501\PycharmProjects\tool_check_nbr\venv\lib\site-packages\pandas\core\reshape\merge.py", line 642, in get_result
    join_index, left_indexer, right_indexer = self._get_join_info()
  File "C:\Users\haroo501\PycharmProjects\tool_check_nbr\venv\lib\site-packages\pandas\core\reshape\merge.py", line 859, in _get_join_info
    (left_indexer, right_indexer) = self._get_join_indexers()
  File "C:\Users\haroo501\PycharmProjects\tool_check_nbr\venv\lib\site-packages\pandas\core\reshape\merge.py", line 837, in _get_join_indexers
    return _get_join_indexers(
  File "C:\Users\haroo501\PycharmProjects\tool_check_nbr\venv\lib\site-packages\pandas\core\reshape\merge.py", line 1320, in _get_join_indexers
    return join_func(lkey, rkey, count, **kwargs)
  File "pandas/_libs/join.pyx", line 97, in pandas._libs.join.left_outer_join
MemoryError: Unable to allocate 298. MiB for an array with shape (39003243,) and data type int64
回溯(最近一次呼叫最后一次):
文件“C:/Users/haroo501/PycharmProjects/tool_check_nbr/my_missing_result.py”,第16行,在
合并=esn_数据源_df.merge(esn_inter_intra_merge_df,how='left',indicator=True)
文件“C:\Users\haroo501\PycharmProjects\tool\u check\u nbr\venv\lib\site packages\pandas\core\frame.py”,第7336行,合并
返回合并(
文件“C:\Users\haroo501\PycharmProjects\tool\u check\u nbr\venv\lib\site packages\pandas\core\reforme\merge.py”,第83行,合并中
返回操作获取结果()
文件“C:\Users\haroo501\PycharmProjects\tool\u check\u nbr\venv\lib\site packages\pandas\core\remode\merge.py”,第642行,在get\u result中
加入索引,左索引器,右索引器=self.\u获取加入信息()
文件“C:\Users\haroo501\PycharmProjects\tool\u check\u nbr\venv\lib\site packages\pandas\core\remode\merge.py”,第859行,在获取加入信息中
(左索引器、右索引器)=self.\u获取\u加入\u索引器()
文件“C:\Users\haroo501\PycharmProjects\tool\u check\u nbr\venv\lib\site packages\pandas\core\remode\merge.py”,第837行,在获取加入索引器中
返回\u获取\u加入\u索引器(
文件“C:\Users\haroo501\PycharmProjects\tool\u check\u nbr\venv\lib\site packages\pandas\core\remode\merge.py”,第1320行,在获取加入索引器中
返回连接函数(lkey、rkey、count、**kwargs)
文件“pandas/_libs/join.pyx”,第97行,在pandas._libs.join.left_outer_join中
MemoryError:无法为形状为(39003243,)且数据类型为int64的数组分配298.MiB
我怎样才能解决这个问题?
希望有人能帮助我解决这个问题。

您正在寻找一个左连接。您可以使用Pandas中的函数
merge
来实现这一点。使用
indicator=True
可以让您看到哪些值仅在一个数据帧中(由指示符变量
'LEFT\u only'
标识),这正是您所寻找的

>>> df1 = pd.DataFrame([1, 2, 3, 4, 5, 6], columns=["my_column"])
>>> df2 = pd.DataFrame([1, 2, 3], columns=["my_column"])
>>> merged = df1.merge(df2, how="left", indicator=True)
>>> merged.query("_merge == 'left_only'")[["my_column"]]

    my_column
3   4
4   5
5   6 

您正在寻找左联接。可以使用Pandas中的函数
merge
来完成此操作。使用
indicator=True
可以查看哪些值仅存在于一个数据帧中(由指示符变量
'LEFT_only'
标识),这正是您所寻找的

>>> df1 = pd.DataFrame([1, 2, 3, 4, 5, 6], columns=["my_column"])
>>> df2 = pd.DataFrame([1, 2, 3], columns=["my_column"])
>>> merged = df1.merge(df2, how="left", indicator=True)
>>> merged.query("_merge == 'left_only'")[["my_column"]]

    my_column
3   4
4   5
5   6 


欢迎使用堆栈溢出。请提供您的输入示例因此,我们可以更好地理解您的问题。请检查此问题:它与您的问题相关:。基本上,“Exception”函数满足您的要求-但SPARK中提供了Exception函数。您需要在python中找到等效函数。@User9102d82感谢您的支持,我尝试使用fo设置索引lowing code
result=esn\u datafeed\u df[~esn\u datafeed\u df.set\u index('st\umts\u df\u relationship\u key')。isin(esn\u inter\u intra\u merge\u df.set\u index('st\umts\u esn\u inter\u inter\u relationship\u key')))。dropna()
并发现此错误
AttributeError:“tuple”对象没有属性“set\u index”
`@G.Anderson您的意思是添加表来解释它?@G.Anderson您能检查一下编辑器吗欢迎使用堆栈溢出。请提供您的输入示例因此,我们可以更好地理解您的问题。请检查此问题:它与您的问题相关:。基本上,“Exception”函数满足您的要求-但SPARK中提供了Exception函数。您需要在python中找到等效函数。@User9102d82感谢您的支持,我尝试使用fo设置索引lowing code
result=esn\u datafeed\u df[~esn\u datafeed\u df.set\u index('st\umts\u df\u relationship\u key')。isin(esn\u inter\u intra\u merge\u df.set\u index('st\umts\u esn\u inter\u inter\u relationship\u key')))。dropna()
并发现此错误
AttributeError:“tuple”对象没有属性“set\u index”
`@G.Anderson您的意思是添加表来解释它?@G.Anderson您能检查一下edit吗我想这对我也适用
result=esn\u datafeed\u df[~esn\u datafeed\u df.set\u index(list(esn\u datafeed\u df.st\u umts\u relationship\u key)).index.isin(esn_inter_intra_merge_df.set_index(list(esn_inter_intra_merge_df.st_umts_esn_inter_intra relationship_key)).index)
这很难阅读。使用简单的变量名,如
df1
df2
,将使你的下一个问题变得更容易:)。顺便说一句,一个问题可以有多个有效答案。你知道这个错误吗?
TypeError:只能合并序列或数据帧对象,a已传递
,你能检查我的编辑吗?当然。你忘了调用函数
pd.read\u sql()
当定义
esn\u inter\u intra\u merge\u df时
应该是:
esn\u inter\u intra\u merge\u df=pd.read\u sql('SELECT*FROM[myDB].[dbo].[esn\u inter\u intra\u merge]',engine)
Ops很抱歉,我没有处理这个问题…:D我更改了它…但我发现了另一个错误:(
MemoryError:无法为具有形状(39003243,)和数据类型int64的数组分配298.MiB
我认为这也适用于我(esn_inter_intra_merge_df.st_umts_esn_inter_intra_relationship_key)).index)这很难阅读。使用简单的变量名,如
df1
df2
将使下一个问题变得更容易:)。顺便说一句,一个问题可以有多个有效答案。你知道这个错误吗?
TypeError:只能合并序列或数据帧对象,a已传递
,你能检查我的编辑吗?当然。你忘了调用函数
pd.read\u sql()
当定义
esn\u inter\u intra\u merge\u df
时,应该是:
esn\u inter\u intra\u merge\u df=pd.read\u sql('SELECT*FROM[myDB].[dbo].[esn\u inter\u intra\u merge]',engine)
Ops我很抱歉我没有注意到这一点…:D我更改了它…但是我没有