df5= pd.merge(df5, df1, how='left', left_on='公司代码', right_on='公司代码') numpy.core._exceptions._ArrayMemoryError: Unable to allocate 62.1 GiB for an array with shape (259, 32183100) and data type object
时间: 2023-06-19 19:04:37 浏览: 183
这个错误意味着你的代码尝试在内存中分配 62.1 GiB 的空间,但是没有足够的内存可用。在这种情况下,你需要采取以下措施来解决内存问题:
1. 尝试使用更少的内存来处理数据。例如,你可以使用 Pandas 的 `dtype` 参数来指定列的数据类型,这可以显著减少内存使用量。
2. 尝试分块处理数据。你可以使用 Pandas 的 `read_csv` 函数的 `chunksize` 参数来读取数据的一部分,然后一次处理一部分数据,这样可以减少内存使用量。
3. 使用更多的内存。这可能需要升级你的硬件,例如购买更多的 RAM 或升级到更高级的计算机。
4. 使用分布式计算框架。例如,你可以使用 Apache Spark 或 Dask 这样的分布式计算框架来处理大型数据集。这些框架可以在多台计算机上分布式运行,从而允许你处理比单个计算机内存更大的数据集。
相关问题
merged_df5 = pd.merge((merged_df3, merged_df4, on=['date'], how='outer') ^ SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
这个错误是因为在调用 `pd.merge()` 函数时,你的语法有误。具体来说,你需要将 `merged_df3` 和 `merged_df4` 两个参数分别传递给 `pd.merge()` 函数,而不是将它们括在一个括号内作为一个参数传递。正确的语法应该是这样的:
```python
merged_df5 = pd.merge(merged_df3, merged_df4, on=['date'], how='outer')
```
请注意,`pd.merge()` 函数的参数是逗号分隔的,而不是用括号括起来的。希望这可以帮助你解决问题。
for i in name_list: data=pd.read_csv(r"D:/批量处理文件/" + i,engine="python") print("{}读取完毕!".format(i)) data['子库代码'].fillna(0, inplace=True) data2 = data[(data["子库代码"] == '0') | (data["子库代码"] < 9999)] num = ['Y', 'N', ] data3 = data2[data2.是否超期标识.isin(num)] n = ['采供中心', '生产管理中心', ] data4 = data3[data3.采购二级部门.isin(n)] v = ['生产管理中心', ] data5 = data4[data4.采购二级部门.isin(v)] m = ['采购部', '采购价格管理部', '价格合约结算部'] data6 = data4[(data4['采购二级部门'] == '采供中心') & (data4['采购三级部门'].isin(m))] set_diff_df = pd.concat([data6, data5, ]) jgo = set_diff_df[set_diff_df['采购类别'].str.contains('生产材料')] df= pd.merge(jgo,da1[['采购类别','所属分会','分会小类','分会类型']],how = 'left',on = '采购类别') df1 = df.dropna(subset=['所属分会']) df2= df1.drop(df1[(df1['所属分会'] == '地弹簧&闭门器分会') &(df1['收货组织'] == 'KL门控事业部库存组织')].index) df3=df2[ ~ df2['订单行类型'].str.contains('需求采购')] df4= pd.merge(df3,db[['收货组织','收货组织简称',]],how = 'left',on = '收货组织') df5= pd.merge(df4,dc[['物料编码','物料类型',]],how = 'left',on = '物料编码') #df5=pd.concat([df4, dc], axis=0) df5['物料类型'].fillna("低频物料", inplace=True) df5["采购类别+事业部"]=df5['采购类别'] + df5['收货组织简称'] df6= pd.merge(df5,dd[['采购类别+事业部','紧急采购周期',]],how = 'left',on = '采购类别+事业部') df6["分会+供应商"]=df6['所属分会'] + df6['供应商代码'] df7= pd.merge(df6,de[['分会+供应商','主力供应商标识',]],how = 'left',on = '分会+供应商') print("{}--处理完毕!".format(i)) df7.to_csv(path_or_buf = r"D:\批量处理文件\{}".format(i), index=None, encoding='utf-8-sig') print("{}--保存完毕!".format(i)) print('-'*20) 代码那里有错误怎么改
根据你提供的代码,我没有看到明显的错误。但是,你可以尝试以下几个步骤来检查和修改代码:
1. 确认导入的库是否正确:你的代码中使用了很多Pandas库的函数,需要确认是否正确导入了这些库。例如,你可以在代码开头添加以下语句来导入Pandas库:
```python
import pandas as pd
```
2. 检查文件路径是否正确:你的代码中使用了文件读取和保存函数,需要确认文件路径是否正确。例如,你可以在文件路径前添加`print()`语句来检查路径是否正确,例如:
```python
print(r"D:/批量处理文件/" + i)
data=pd.read_csv(r"D:/批量处理文件/" + i,engine="python")
```
3. 检查数据列名是否正确:你的代码中使用了很多列名,需要确认列名是否正确。例如,你可以在读取数据后使用`print()`函数来输出数据的列名,例如:
```python
print(data.columns)
```
4. 检查数据筛选条件是否正确:你的代码中使用了很多数据筛选条件,需要确认条件是否正确。例如,你可以在筛选数据后使用`print()`函数来输出数据的行数,例如:
```python
print(len(data2))
```
5. 检查数据合并是否正确:你的代码中使用了很多数据合并函数,需要确认合并是否正确。例如,你可以在合并数据后使用`print()`函数来输出数据的行数,例如:
```python
print(len(df4))
```
通过逐步检查和修改代码,你应该可以找到和修复错误。
阅读全文