在运行代码的时候出现FutureWarning: Passing 'suffixes' which cause duplicate columns {'pctChg_x'} in the result is deprecated and will raise a MergeError in a future version.错误
import numpy as np
import scipy.optimize as opt
import pandas as pd
import matplotlib.pyplot as plt
```python
def ret(stock):
result = pd.read_csv(stock+'.csv') # 打开csv文件
result.index = result['date'] #获取文件中索引为’date‘的内容
return result.pctChg #返回文件中的pctChg数据
stocks = ['a','b','c','d','f']
names = [u'A',u'B',u'C',u'D',u'E']
R0 = ret(stocks[0]) #获取stocks中第一个元素对应的pctChg数据
n_stock = len(stocks)
for i in range(1,n_stock):
x = ret(stocks[i])
R0 = pd.merge(R0,x,left_index=True,right_index=True) #合并数组,并返回到一个类似excel的容器中,或者说一个数组
R = np.array(R0)
FutureWarning: Passing 'suffixes' which cause duplicate columns {'pctChg_x'} in the result is deprecated and will raise a MergeError in a future version.
从运行结果应该是出现重复列,但我不知道如何删除重复列。于是我对原文件稍微修改了一下数据,但仍然出现该问题
使得该项代码正确运行,并消除重复列。
我代你问了GPT,他是这么回复的
在使用 pd.merge 函数合并数据时,如果出现了 'FutureWarning: Passing'suffixes' which cause duplicate columns {'pctChg_x'} in the result is deprecated and will raise a MergeError in a future version.' 的警告,那么很可能是因为你在合并数据时出现了列名重复的问题。
在这个例子中,你的两个数据集中都有一列名为 "pctChg" 的列,在使用 pd.merge 函数合并这两个数据集时,就会出现列名重复的问题。为了解决这个问题,你可以使用 suffixes 参数来为这两个列设置不同的后缀,以区分它们。例如,你可以将代码改为:
R0 = ret(stocks[0]) #获取stocks中第一个元素对应的pctChg数据
n_stock = len(stocks)
for i in range(1,n_stock):
x = ret(stocks[i])
R0 = pd.merge(R0, x, left_index=True, right_index=True, suffixes=('_' + stocks[i-1], '_' + stocks[i])) #合并数组,并返回到一个类似excel的容器中,或者说一个数组
R = np.array(R0)
这样,你就可以通过设置不同的后缀来区分不同数据集中的 "pctChg" 列,避免出现列名重复的问题。
不知道能不能帮到你