编辑:添加了来自csv文件的输入。此行未合并。
我每周从同一个数据库中提取数据到csv,但最近有奇怪的错误。我有三个关键字段,我无法合并它们。它已经完美地工作了半年,直到它突然停止为某些行工作。
key1是int64,key2对象,key3对象。当我在UltraEdit中查看csv时,键完全相同。
输入:
file1:379002,5930,1068247,7
file2:379002,5930,1068247,9
合并前三个字段。
到目前为止,我已经尝试了df.col.map(str)并剥离了所有六个键上的任何前导零,但它不起作用。当与外部合并时,某些行在右侧df的合并列中具有NaN。
indata1 = pd.read_csv('file1.csv')
indata1['key1'] = indata1['key1'].map(str)
indata1['key2'] = indata1['key2'].map(str)
indata1['key3'] = indata1['key3'].map(str)
indata1['key1'] = [i.lstrip('0') for i in indata1['key1']]
indata1['key2'] = [i.lstrip('0') for i in indata1['key2']]
indata1['key3'] = [i.lstrip('0') for i in indata1['key3']]
indata2 = pd.read_csv('file2.csv')
indata2['key1'] = indata2['key1'].map(str)
indata2['key2'] = indata2['key2'].map(str)
indata2['key3'] = indata2['key3'].map(str)
indata2['key1'] = [i.lstrip('0') for i in indata2['key1']]
indata2['key2'] = [i.lstrip('0') for i in indata2['key2']]
indata2['key3'] = [i.lstrip('0') for i in indata2['key3']]
merged = pd.merge(left = indata1,
right = indata2,
how = 'outer',
on = ('key1', 'key2', 'key3'))
这将从右侧df返回合并中的NaN和正确值。我知道密钥存在于两个数据帧中。有没有其他方法可以让它更健壮?或者对齐dtypes?我迷路了。