Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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熊猫-重命名和合并3个数据集_Python_Pandas_Merge_Rename - Fatal编程技术网

Python熊猫-重命名和合并3个数据集

Python熊猫-重命名和合并3个数据集,python,pandas,merge,rename,Python,Pandas,Merge,Rename,我想更改3个数据集的公共变量名称 然后合并它们,但重命名似乎不会将变量名更改为EID, 我怎样才能解决它 另外,我是否可以使用pd.merge命令合并3个数据集,而不是对所有数据集执行1:1操作 谢谢 data1516 = pd.read_csv('C:/data2015_2016.csv', sep='|', names=None, header=1, encoding='latin-1') data1617 = pd.read_csv('C:/data2016_2017.csv',

我想更改3个数据集的公共变量名称 然后合并它们,但重命名似乎不会将变量名更改为EID, 我怎样才能解决它

另外,我是否可以使用pd.merge命令合并3个数据集,而不是对所有数据集执行1:1操作

谢谢

data1516 = pd.read_csv('C:/data2015_2016.csv', sep='|', names=None, header=1, encoding='latin-1')    
data1617 = pd.read_csv('C:/data2016_2017.csv', sep='|', names=None, header=1, encoding='latin-1')    
data1718 = pd.read_csv('C:/data2017_2018.csv', sep='|', names=None, header=1, encoding='latin-1')

data1516.rename(index=str, columns={"Employer: ID" : "EID"})    
data1617.rename(index=str, columns={"Employer: ID" : "EID"})    
data1718.rename(index=str, columns={"Employer: ID" : "EID"})    
data1517 = pd.merge(data1516, data1617, on='EID', how='outer')

这应该可以做到:

dfs = [data1516, data1617, data1718]
df = pd.concat([x.rename(columns={"Employer: ID" : "EID"}) for x in dfs], axis=1)

使用
reduce

data1516=data1516.rename(columns={"Employer: ID" : "EID"})    
data1617=data1617.rename(columns={"Employer: ID" : "EID"})    
data1718=data1718.rename(columns={"Employer: ID" : "EID"})  

l=[data1516,data1617,data1718]
import functools 
df=functools.reduce(lambda x, y: pd.merge(x, y, on = 'EID'), l)

重新分配它
data1516=data1516。重命名(index=str,columns={“雇主:ID”:“EID”})
谢谢!但在添加它们之后,我仍然会得到一个keyerror。keyerror:'EID'将其添加为答案。请检查是否已完成:)thxBtw对于简单的查询,是否有任何方法使用merge而不是concat来完成此操作?似乎我们可以将EID设置为索引更好,对吗?@Nora,
merge()
只接受两个DFs,因此您必须重复它(N-1)次,
N
是要连接的DFs的#非常感谢Max,是的,我想我会做合并,因为我的主管不想要concat,但你的重命名工作@maxU你能帮我把你的方程分解成重命名吗?试过用这个,但还是有关键错误。顺便说一句,谢谢你让我提醒功能工具!真是个初学者