鱼C论坛

 找回密码
 立即注册
查看: 1997|回复: 19

[已解决]求助 哪里错误了

[复制链接]
发表于 2023-7-25 14:07:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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_1'] != df_merged['states_2']]

df.to_excel('./result.xlsx', index=False)
# 输出结果
print(df)
最佳答案
2023-7-25 15:19:31

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_1'] != df_merged['states_2']]

df.to_excel('./result.xlsx', index=False)
# 输出结果
print(df)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-25 14:07:17 | 显示全部楼层
根据您提供的代码,有几个问题需要注意:

1. 导入模块不正确:代码中导入了pandas和tqdm模块,但是在开头并未正确导入相应的模块。请添加以下代码行来导入模块:
import pandas as pdfrom tqdm import tqdm
2. 文件路径错误:请确保'one.xlsx'和'two.xlsx'文件在当前工作目录下,并且文件名拼写正确。否则,请提供正确的文件路径。

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

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

                               
登录/注册后可看大图


此回答源于ChatGPT,若有不正确之处,请多包容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 14:07:21 | 显示全部楼层
在你提供的代码中,有一些错误导致它无法正常运行。以下是你需要进行修正的地方:

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

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

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

根据你的描述,以上是代码中可能出现的问题和需要进行修正的地方。请检查并进行相应的更改,以确保代码的正确性。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 14:07:24 | 显示全部楼层
在你提供的代码中,有两个问题:

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

其次,在合并两张表的步骤中,你使用了 pd.merge 函数,并指定了 suffixes 参数为 ('_1', '_2')。但是在筛选出有状态变化的行时,你使用的列名是 states_1states_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_merged['states']]# 输出结果df.to_excel('./result.xlsx', index=False)print(df)
请注意,在这段代码中,我将 suffixes 参数修改为 ('','')。如果你的数据中确实有需要区分的列,可以根据实际情况进行修改。另外,确保两张表中要比较的列名是一致的,否则合并操作可能会失败。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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文件非常大,那么在执行这段代码时可能会耗尽内存。你可以尝试使用更高效的数据处理方法,或者在一台有更多内存的机器上运行这段代码。

如果你可以提供具体的错误信息,我可以给出更准确的建议。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 14:14:20 | 显示全部楼层
你的错误信息呢??????没有错误信息我咋知道你要干啥
抵制ChatGPT回答问题,7月25号开始,我宁可垫底也不用gpt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-25 14:14:30 | 显示全部楼层
Mike_python小 发表于 2023-7-25 14:07
在你提供的代码中,有两个问题:

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

原先两张表格有一张多了一列 其他一样 我删了多的 就不对了  原先的是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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] < 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 [ping.codes for ping in self.groupings]
  File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\ops.py", line 824, in <listcomp>
    return [ping.codes for ping in self.groupings]
  File "D:\PythonProject\pythonProject\lib\site-packages\pandas\core\groupby\grouper.py", line 671, in codes
    return self._codes_and_uniques[0]
  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[assignment]
  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[num_pos])
  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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

两张表打包成zip上传到 wormhole.app
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-25 14:28:20 | 显示全部楼层
歌者文明清理员 发表于 2023-7-25 14:23
两张表打包成zip上传到 wormhole.app

可以留个邮箱私发你嘛 不懂这个工具
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 14:36:16 | 显示全部楼层
一介书生423 发表于 2023-7-25 14:28
可以留个邮箱私发你嘛 不懂这个工具

gzwm67@hotmail.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-25 14:39:38 | 显示全部楼层
Mike_python小 发表于 2023-7-25 14:07
在你提供的代码中,有两个问题:

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

列一样 还是失败了 方便留个邮箱吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

方便留个邮箱吗 我发送下数据你帮我看看呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 14:47:59 | 显示全部楼层
一介书生423 发表于 2023-7-25 14:43
方便留个邮箱吗 我发送下数据你帮我看看呗

isdkz@outlook.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-25 15:12:18 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 15:19:31 | 显示全部楼层    本楼为最佳答案   

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_1'] != df_merged['states_2']]

df.to_excel('./result.xlsx', index=False)
# 输出结果
print(df)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

import ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-25 16:16:15 | 显示全部楼层

Empty DataFrame
Columns: [location, project_name, building, unit, high, room, area, size, buy_price, impro_price, target, type, sell_date, states_1, got_date_1, states_2, got_date_2]
Index: []

Process finished with exit code 0


出了这个结果 导出表格为空
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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: [Errno 2] No such file or directory: 'one.xlsx'

Process finished with exit code 1
  还是错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

import ...

可否留个邮箱 发数据表和代码帮忙修改下  大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 02:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表