将数据与对象格式的两列合并



我有两个数据集,我想用左联接函数合并这两个表。下面你可以看到数据的结构:

Table 1
Index(['', '01', '02', '03', '05', '06', '07', '08', '09', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '21', '22', '23', '24', '25', '26',
'27', '28', '29', '31', '32', '33', '35', '36', '37', '38', '39', '41',
'42', '43', '45', '46', '47', '49', '51', '52', '53', '55', '56', '58',
'59', '61', '62', '63', '64', '65', '66', '68', '69', '71', '72', '73',
'74', '75', '77', '78', '79', '81', '82', '84', '85', '86', '87', '88',
'91', '92', '93', '94', '95', '96', '98', '99', 'K'],
dtype='object')
Table 2
Index(['0', '01', '02', '03', '05', '06', '07', '08', '09', '10', '11', '12',
'13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',
'25', '26', '27', '28', '29', '30', '31', '32', '33', '35', '36', '37',
'38', '39', '41', '42', '43', '45', '46', '47', '49', '50', '51', '52',
'53', '55', '56', '58', '59', '60', '61', '62', '63', '64', '65', '66',
'68', '69', '70', '71', '72', '73', '74', '75', '77', '78', '79', '80',
'81', '82', '84', '85', '86', '87', '88', '90', '91', '92', '93', '94',
'95', '96', '97', '98', '99', 'K'],
dtype='object')

在这些表格中,我应用这个函数

data=pd.merge(table1,table2,on='key', how='left',indicator=True)

但是,尽管数字存储为文本,Python无法与之匹配,例如45,46,92,94等。

关于如何解决这个问题有什么建议吗?

据我所知,这个解决方案可能就是您想要的。

import pandas as pd
tb1 = ['', '01', '02', '03', '05', '06', '07', '08', '09', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '21', '22', '23', '24', '25', '26',
'27', '28', '29', '31', '32', '33', '35', '36', '37', '38', '39', '41',
'42', '43', '45', '46', '47', '49', '51', '52', '53', '55', '56', '58',
'59', '61', '62', '63', '64', '65', '66', '68', '69', '71', '72', '73',
'74', '75', '77', '78', '79', '81', '82', '84', '85', '86', '87', '88',
'91', '92', '93', '94', '95', '96', '98', '99', 'K']
tb2 = ['0', '01', '02', '03', '05', '06', '07', '08', '09', '10', '11', '12',
'13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',
'25', '26', '27', '28', '29', '30', '31', '32', '33', '35', '36', '37',
'38', '39', '41', '42', '43', '45', '46', '47', '49', '50', '51', '52',
'53', '55', '56', '58', '59', '60', '61', '62', '63', '64', '65', '66',
'68', '69', '70', '71', '72', '73', '74', '75', '77', '78', '79', '80',
'81', '82', '84', '85', '86', '87', '88', '90', '91', '92', '93', '94',
'95', '96', '97', '98', '99', 'K']
tb1 = pd.DataFrame (tb1, columns = ['column_name'])
tb1 = tb1.set_index('column_name')
tb2 = pd.DataFrame (tb2, columns = ['column_name'])
tb2 = tb2.set_index('column_name')
data = [tb1,tb2]
data = pd.concat(data) #to put the data in the same column
data2 = tb1.join(tb2) #to put the data in the same row but in different columns

最新更新