Python熊猫-重命名和合并3个数据集
我想更改3个数据集的公共变量名称 然后合并它们,但重命名似乎不会将变量名更改为EID, 我怎样才能解决它 另外,我是否可以使用pd.merge命令合并3个数据集,而不是对所有数据集执行1:1操作 谢谢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',
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你能帮我把你的方程分解成重命名吗?试过用这个,但还是有关键错误。顺便说一句,谢谢你让我提醒功能工具!真是个初学者