一介书生423 发表于 2023-7-25 14:07:06

求助 哪里错误了

import pandas as pd
from tqdm import tqdm

# 读取两张表
df1 = pd.read_excel('one.xlsx')
df2 = pd.read_excel('two.xlsx')

# 筛选出location、project_name、building、unit、high和room相同的行   ,'got_date'
cols = ['location', 'project_name', 'building', 'unit', 'high', 'room','area','size','buy_price','impro_price','target','type','sell_date']
df1_grouped = df1.groupby(cols).first().reset_index()
df2_grouped = df2.groupby(cols).first().reset_index()

# 合并两张表,并筛选出states有变化的行
df_merged = pd.merge(df1_grouped, df2_grouped, on=cols, suffixes=('_1', '_2'))
df = df_merged.loc != df_merged['states_2']]

df.to_excel('./result.xlsx', index=False)
# 输出结果
print(df)

学习编程中的Ben 发表于 2023-7-25 14:07:17

根据您提供的代码,有几个问题需要注意:

1. 导入模块不正确:代码中导入了pandas和tqdm模块,但是在开头并未正确导入相应的模块。请添加以下代码行来导入模块:import pandas as pd
from tqdm import tqdm

2. 文件路径错误:请确保'one.xlsx'和'two.xlsx'文件在当前工作目录下,并且文件名拼写正确。否则,请提供正确的文件路径。

3. 列名不匹配:在合并两张表时,使用了 df_merged['states_1'] 和 df_merged['states_2'] 作为筛选条件,但在之前的代码中并未出现 'states_1' 和 'states_2' 这两列名。请确保列名与实际数据一致,或根据实际情况更改列名。

请注意将红色标记的部分更正后再运行代码。另外,如果存在其他错误信息或需求,请提供更多详细信息,以便我能够更好地帮助您解决问题。求给个最佳答案,非常感谢{:10_254:}
只要点击我的回复贴写着发表时间的那一栏的绿色按钮即可!-->https://i.imgtg.com/2023/07/24/Oh0mQB.png

此回答源于ChatGPT,若有不正确之处,请多包容

陶远航 发表于 2023-7-25 14:07:21

在你提供的代码中,有一些错误导致它无法正常运行。以下是你需要进行修正的地方:

1. 导入语句应该单独写在每行的开头,而不是连在一起。请将import pandas as pdfrom tqdm import tqdm修改为两行:
import pandas as pd
from tqdm import tqdm


2. 在df1和df2的读取操作中,你使用了pd.read_excel('one.xlsx')和pd.read_excel('two.xlsx')来读取Excel文件。如果这两个文件与你的脚本文件(.py文件)位于同一目录下没有问题,否则你需要提供完整的文件路径。

3. 在代码的最后,你想将结果保存到名为'result.xlsx'的Excel文件中,但是你在代码中使用了相对路径'./result.xlsx'。请确保运行此代码的目录下存在一个名为'result.xlsx'的文件,或者提供完整的文件路径。

根据你的描述,以上是代码中可能出现的问题和需要进行修正的地方。请检查并进行相应的更改,以确保代码的正确性。
如果问题已经解决,请设置最佳答案

Mike_python小 发表于 2023-7-25 14:07:24

在你提供的代码中,有两个问题:

首先,在导入库的时候,你使用了 from tqdm import tqdm,但是代码中并没有用到 tqdm 库。如果你不需要使用这个库,可以将这一行删除。

其次,在合并两张表的步骤中,你使用了 pd.merge 函数,并指定了 suffixes 参数为 ('_1', '_2')。但是在筛选出有状态变化的行时,你使用的列名是 states_1 和 states_2,这些列名并不存在于之前指定的 cols 列表中。因此,你需要将 suffixes 参数修改为 ('',''),或者根据实际情况修改筛选条件。

下面是修改后的代码:


import pandas as pd

# 读取两张表
df1 = pd.read_excel('one.xlsx')
df2 = pd.read_excel('two.xlsx')

# 筛选出location、project_name、building、unit、high和room相同的行
cols = ['location', 'project_name', 'building', 'unit', 'high', 'room','area','size','buy_price','impro_price','target','type','sell_date']
df1_grouped = df1.groupby(cols).first().reset_index()
df2_grouped = df2.groupby(cols).first().reset_index()

# 合并两张表,并筛选出states有变化的行
df_merged = pd.merge(df1_grouped, df2_grouped, on=cols, suffixes=('',''))
df = df_merged.loc != df_merged['states']]

# 输出结果
df.to_excel('./result.xlsx', index=False)
print(df)


请注意,在这段代码中,我将 suffixes 参数修改为 ('','')。如果你的数据中确实有需要区分的列,可以根据实际情况进行修改。另外,确保两张表中要比较的列名是一致的,否则合并操作可能会失败。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-7-25 14:07:36

看起来你的代码的主要目的是合并两个Excel文件,然后根据一些特定的列('location', 'project_name', 'building', 'unit', 'high', 'room', 'area', 'size', 'buy_price', 'impro_price', 'target', 'type', 'sell_date')对数据进行分组,之后找出其中'states'字段有变化的记录。

这段代码一般情况下应该是可以正常运行的。但由于你没有提供具体的错误信息,我难以给出确切的解决方案。以下是一些可能的错误源和对应的解决方法:

1. 文件打开错误:确保'one.xlsx'和'two.xlsx'这两个文件存在,并且在你的Python脚本所在的目录下。

2. 数据类型错误:你可能在不同的数据类型上执行了不恰当的操作。例如,你可能在字符串和数字上执行了相等或者不等运算,导致Python抛出了错误。你可以检查所有列的数据类型,并确保你的操作是合法的。

3. 内存错误:如果你的Excel文件非常大,那么在执行这段代码时可能会耗尽内存。你可以尝试使用更高效的数据处理方法,或者在一台有更多内存的机器上运行这段代码。

如果你可以提供具体的错误信息,我可以给出更准确的建议。

歌者文明清理员 发表于 2023-7-25 14:14:20

你的错误信息呢??????没有错误信息我咋知道你要干啥
抵制ChatGPT回答问题,7月25号开始,我宁可垫底也不用gpt

一介书生423 发表于 2023-7-25 14:14:30

Mike_python小 发表于 2023-7-25 14:07
在你提供的代码中,有两个问题:

首先,在导入库的时候,你使用了 from tqdm import tqdm,但是代码中并没 ...

原先两张表格有一张多了一列 其他一样 我删了多的 就不对了原先的是对的

一介书生423 发表于 2023-7-25 14:18:51

歌者文明清理员 发表于 2023-7-25 14:14
你的错误信息呢??????没有错误信息我咋知道你要干啥
抵制ChatGPT回答问题,7月25号开始,我宁可垫底 ...

D:\PythonProject\pythonProject\Scripts\python.exe D:\一介书生资料库\爬虫:八爪鱼\各市县整体市场\数据匹配处理\process.py
D:\PythonProject\pythonProject\lib\site-packages\numpy\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:
D:\PythonProject\pythonProject\lib\site-packages\numpy\.libs\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll
D:\PythonProject\pythonProject\lib\site-packages\numpy\.libs\libopenblas64__v0.3.21-gcc_10_3_0.dll
warnings.warn("loaded more than 1 DLL from .libs:"
Traceback (most recent call last):
File "D:\PythonProject\pythonProject\lib\site-packages\numpy\core\fromnumeric.py", line 57, in _wrapfunc
    return bound(*args, **kwds)
TypeError: '<' not supported between instances of 'int' and 'datetime.datetime'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\一介书生资料库\爬虫:八爪鱼\各市县整体市场\数据匹配处理\process.py", line 51, in <module>
    df1_grouped = df1.groupby(cols).first().reset_index()
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\groupby.py", line 2384, in first
    return self._agg_general(
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\groupby.py", line 1422, in _agg_general
    result = self._cython_agg_general(
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\groupby.py", line 1507, in _cython_agg_general
    new_mgr = data.grouped_reduce(array_func)
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\internals\managers.py", line 1503, in grouped_reduce
    applied = sb.apply(func)
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\internals\blocks.py", line 329, in apply
    result = func(self.values, **kwargs)
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\groupby.py", line 1490, in array_func
    result = self.grouper._cython_operation(
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 955, in _cython_operation
    cy_op = WrappedCythonOp(kind=kind, how=how, has_dropped_na=self.has_dropped_na)
File "pandas\_libs\properties.pyx", line 36, in pandas._libs.properties.CachedProperty.__get__
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 869, in has_dropped_na
    return bool((self.group_info < 0).any())
File "pandas\_libs\properties.pyx", line 36, in pandas._libs.properties.CachedProperty.__get__
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 873, in group_info
    comp_ids, obs_group_ids = self._get_compressed_codes()
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 892, in _get_compressed_codes
    group_index = get_group_index(self.codes, self.shape, sort=True, xnull=True)
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 824, in codes
    return
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 824, in <listcomp>
    return
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\grouper.py", line 671, in codes
    return self._codes_and_uniques
File "pandas\_libs\properties.pyx", line 36, in pandas._libs.properties.CachedProperty.__get__
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\grouper.py", line 780, in _codes_and_uniques
    codes, uniques = algorithms.factorize(# type: ignore
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\algorithms.py", line 786, in factorize
    uniques, codes = safe_sort(
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\algorithms.py", line 1539, in safe_sort
    ordered = _sort_mixed(values)
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\algorithms.py", line 1607, in _sort_mixed
    num_argsort = np.argsort(values)
File "<__array_function__ internals>", line 200, in argsort
File "D:\PythonProject\pythonProject\lib\site-packages\numpy\core\fromnumeric.py", line 1146, in argsort
    return _wrapfunc(a, 'argsort', axis=axis, kind=kind, order=order)
File "D:\PythonProject\pythonProject\lib\site-packages\numpy\core\fromnumeric.py", line 66, in _wrapfunc
    return _wrapit(obj, method, *args, **kwds)
File "D:\PythonProject\pythonProject\lib\site-packages\numpy\core\fromnumeric.py", line 43, in _wrapit
    result = getattr(asarray(obj), method)(*args, **kwds)
TypeError: '<' not supported between instances of 'int' and 'datetime.datetime'

Process finished with exit code 1

歌者文明清理员 发表于 2023-7-25 14:23:53

一介书生423 发表于 2023-7-25 14:18
D:\PythonProject\pythonProject\Scripts\python.exe D:\一介书生资料库\爬虫:八爪鱼\各市县整体市场\数 ...

两张表打包成zip上传到 wormhole.app

一介书生423 发表于 2023-7-25 14:28:20

歌者文明清理员 发表于 2023-7-25 14:23
两张表打包成zip上传到 wormhole.app

可以留个邮箱私发你嘛 不懂这个工具

歌者文明清理员 发表于 2023-7-25 14:36:16

一介书生423 发表于 2023-7-25 14:28
可以留个邮箱私发你嘛 不懂这个工具


gzwm67@hotmail.com

一介书生423 发表于 2023-7-25 14:39:38

Mike_python小 发表于 2023-7-25 14:07
在你提供的代码中,有两个问题:

首先,在导入库的时候,你使用了 from tqdm import tqdm,但是代码中并没 ...

列一样 还是失败了 方便留个邮箱吗

一介书生423 发表于 2023-7-25 14:43:23

isdkz 发表于 2023-7-25 14:07
看起来你的代码的主要目的是合并两个Excel文件,然后根据一些特定的列('location', 'project_name', 'buil ...

方便留个邮箱吗 我发送下数据你帮我看看呗

isdkz 发表于 2023-7-25 14:47:59

一介书生423 发表于 2023-7-25 14:43
方便留个邮箱吗 我发送下数据你帮我看看呗

isdkz@outlook.com

一介书生423 发表于 2023-7-25 15:12:18

isdkz 发表于 2023-7-25 14:47


已发

isdkz 发表于 2023-7-25 15:19:31

一介书生423 发表于 2023-7-25 15:12
已发

room这一列的数据类型太杂了,而且存在不兼容的数据类型(整数和日期),把它全应用为字符串吧

import pandas as pd
from tqdm import tqdm

# 读取两张表
df1 = pd.read_excel('one.xlsx')
df2 = pd.read_excel('two.xlsx')

df1['room'] = df1['room'].astype(str)
df2['room'] = df2['room'].astype(str)
# 筛选出location、project_name、building、unit、high和room相同的行   ,'got_date'
cols = ['location', 'project_name', 'building', 'unit', 'high', 'room','area','size','buy_price','impro_price','target','type','sell_date']
df1_grouped = df1.groupby(cols).first().reset_index()
df2_grouped = df2.groupby(cols).first().reset_index()

# 合并两张表,并筛选出states有变化的行
df_merged = pd.merge(df1_grouped, df2_grouped, on=cols, suffixes=('_1', '_2'))
df = df_merged.loc != df_merged['states_2']]

df.to_excel('./result.xlsx', index=False)
# 输出结果
print(df)

一介书生423 发表于 2023-7-25 15:24:44

isdkz 发表于 2023-7-25 15:19
room这一列的数据类型太杂了,而且存在不兼容的数据类型(整数和日期),把它全应用为字符串吧

import ...

{:5_106:}

一介书生423 发表于 2023-7-25 16:16:15

一介书生423 发表于 2023-7-25 15:24


Empty DataFrame
Columns:
Index: []

Process finished with exit code 0


出了这个结果 导出表格为空

一介书生423 发表于 2023-10-31 10:41:58

D:\PythonProject\pythonProject\Scripts\python.exe E:\qycache\xuexi\pythonProject\房地产\process.py
D:\PythonProject\pythonProject\lib\site-packages\numpy\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:
D:\PythonProject\pythonProject\lib\site-packages\numpy\.libs\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll
D:\PythonProject\pythonProject\lib\site-packages\numpy\.libs\libopenblas64__v0.3.21-gcc_10_3_0.dll
warnings.warn("loaded more than 1 DLL from .libs:"
Traceback (most recent call last):
File "E:\qycache\xuexi\pythonProject\房地产\process.py", line 5, in <module>
    df1 = pd.read_excel('one.xlsx')
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\io\excel\_base.py", line 478, in read_excel
    io = ExcelFile(io, storage_options=storage_options, engine=engine)
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\io\excel\_base.py", line 1496, in __init__
    ext = inspect_excel_format(
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\io\excel\_base.py", line 1371, in inspect_excel_format
    with get_handle(
File "D:\PythonProject\pythonProject\lib\site-packages\pandas\io\common.py", line 868, in get_handle
    handle = open(handle, ioargs.mode)
FileNotFoundError: No such file or directory: 'one.xlsx'

Process finished with exit code 1
还是错误

一介书生423 发表于 2023-10-31 10:44:05

isdkz 发表于 2023-7-25 15:19
room这一列的数据类型太杂了,而且存在不兼容的数据类型(整数和日期),把它全应用为字符串吧

import ...

可否留个邮箱 发数据表和代码帮忙修改下大神
页: [1]
查看完整版本: 求助 哪里错误了