Pandas 将两个不同大小的数据帧合并为一个

Pandas 将两个不同大小的数据帧合并为一个,pandas,merge,append,concatenation,union,Pandas,Merge,Append,Concatenation,Union,我希望将两个大小不同的数据帧附加在一起。我试过追加、合并、合并——我知道我很接近,但错过了一些相当简单的东西。我对独自学习Python还不熟悉 import pandas as pd data1 = [['lj', 22.72, 37, 9.8], ['nc', 13.24, 30.9, 4.4],['bm', 13.77, 26.3, 9.3], ['jl', 12, 25.9, 7.2]] df = pd.DataFrame(data1, columns= ['Name', 'Proj',

我希望将两个大小不同的数据帧附加在一起。我试过追加、合并、合并——我知道我很接近,但错过了一些相当简单的东西。我对独自学习Python还不熟悉

import pandas as pd

data1 = [['lj', 22.72, 37, 9.8], ['nc', 13.24, 30.9, 4.4],['bm', 13.77, 26.3, 9.3], ['jl', 12, 25.9, 7.2]]
df = pd.DataFrame(data1, columns= ['Name', 'Proj', 'Ceil', 'Floor'])
print(df)

data2 = [['0', 50, 55, 25, 20], ['1', 49, 54, 24, 19], ['2', 33, 2, 27, 18], ['3', 14, 60, 17, 35], ['4', 45, 40, 48, 10], ['5', 10, 15, 35, 30], ['6', 57, 75, 27, 27], ['7', 22, 17, 18, 11], ['8', 3, 6, 26, 36], ['9', 12, 32, 5, 3]]
df2 = pd.DataFrame(data2, columns=['sim_id', 'lj', 'nc', 'bn', 'jl'])
print(df2)
名称 项目 (用熟石膏、木板等)装天花板 地板 0 lj 22.72 37 9.8 1. 数控 13.24 30.9 4.4 2. bm 13.77 26.3 9.3 3. jl 12 25.9 7.2
您可以使用
合并
。但是您需要一个公共列来连接这两个数据帧。由于您没有任何公共列,一种方法是创建一个临时列,只用于join,然后将其删除。像下面这样

import pandas as pd

data1 = [['lj', 22.72, 37, 9.8], ['nc', 13.24, 30.9, 4.4],['bm', 13.77, 26.3, 9.3], ['jl', 12, 25.9, 7.2]]
df = pd.DataFrame(data1, columns= ['Name', 'Proj', 'Ceil', 'Floor'])
print(df)

data2 = [['0', 50, 55, 25, 20], ['1', 49, 54, 24, 19], ['2', 33, 2, 27, 18], ['3', 14, 60, 17, 35], ['4', 45, 40, 48, 10], ['5', 10, 15, 35, 30], ['6', 57, 75, 27, 27], ['7', 22, 17, 18, 11], ['8', 3, 6, 26, 36], ['9', 12, 32, 5, 3]]
df2 = pd.DataFrame(data2, columns=['sim_id', 'lj', 'nc', 'bn', 'jl'])
print(df2)
#add the below lines
df['temp']=1
df2['temp']=1
df3 = pd.merge(df,df2, on=['temp'])
df3 = df3.drop('temp', axis=1)
print(df3)

您还可以使用
assign
df.assign(temp=1)。merge(df2.assign(temp=1),on='temp')。drop('temp',1);)尝试使用一行程序对这看起来更简单:)@ShubhamSharmaGreat谢谢各位,这些都奏效了!阿伦的后续问题。合并是有效的,但它会导致跨列合并值,如果我想执行索引匹配的等效操作,只返回给定“Name”的值,我将如何执行该操作。我已尝试查找,但获取的行和列的长度必须相等。如果我理解正确,您需要
df.loc
。使用
df3.loc[df3['Name']=='nc']
或简单地
df3[df3['Name']=='nc']
将具有
Name
的行作为
nc
@Ian>返回