抱歉,我有一个非常简单的问题。所以我有两个看起来像的数据帧 数据帧1: 列:a b c d e f g h
数据帧2: 专栏:e ef
我正在尝试在第e列的Dataframe 1上加入Dataframe 2,这应该会产生 列:a b c d e ef g h 要么 列:a b c d e f g h ef
然而: 当我打印出来时,df1.merge(df2,how ='inner',on ='e')会产生一个空白数据帧。
'outer'合并仅垂直扩展数据帧(就像使用追加函数一样)。
非常感谢一些帮助,谢谢!
答案 0 :(得分:1)
您需要相同的dtypes
列才能加入,因此需要转换:
#convert string column to int
df1['e'] = df1['e'].astype(int)
#inner is default value, so can be omit
df1.merge(df2, on = 'e')
样品:
df1 = pd.DataFrame({'a':list('abcdef'),
'b':[4,5,4,5,5,4],
'c':[7,8,9,4,2,3],
'd':[1,3,5,7,1,0],
'e':['5','3','6','9','2','4'],
'f':list('aaabbb'),
'g':[1,3,5,7,1,0]})
print (df1)
a b c d e f g
0 a 4 7 1 5 a 1
1 b 5 8 3 3 a 3
2 c 4 9 5 6 a 5
3 d 5 4 7 9 b 7
4 e 5 2 1 2 b 1
5 f 4 3 0 4 b 0
df2 = pd.DataFrame({'ef':[10,30,50,70,10,100],
'e':[5,3,6,9,0,7]})
print (df2)
e ef
0 5 10
1 3 30
2 6 50
3 9 70
4 0 10
5 7 100
df1['e'] = df1['e'].astype(int)
df = df1.merge(df2, on = 'e')
print (df)
a b c d e f g ef
0 a 4 7 1 5 a 1 10
1 b 5 8 3 3 a 3 30
2 c 4 9 5 6 a 5 50
3 d 5 4 7 9 b 7 70
答案 1 :(得分:0)
而不是
df1.merge(...)
尝试:
pd.merge(left = df1,right = df2,on ='e',how ='inner')
答案 2 :(得分:0)
你可以这样做:
def mergeDfs(df1,df2):
newDf = dict()
dfList = []
for i in df1:
l = len(i)
row = []
for j in range(l):
row.append(df1[i][j])
newDf[i] = row
dfList.append(i)
for i in df2:
l = len(i)
row = []
if i not in dfList:
for j in range(l):
row.append(df2[i][j])
newDf[i] = row
df = pd.DataFrame(newDf)
return df