Я хочу объединить два кадра данных условно со следующими сценариями:
import pandas as pd
dfa = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']})
dfb = pd.DataFrame({'A': ['A0', 'A1','A1', 'A2'],
'C': ['C0', 'C1', 'C2','C3']})
dfc = dfa.merge(dfb)
for i in range(len(dfc.index)):
if dfc['A'][i]==dfc['A'][i+1]:
dfc.drop([i], inplace=True)
Но есть сообщение об ошибке KeyError: 4
:
In [38]: runfile('C:/Users/Administrator/.spyder-py3/temp.py', wdir='C:/Users/Administrator/.spyder-py3')
Traceback (most recent call last):
File "C:\Users\Administrator\.spyder-py3\temp.py", line 18, in <module>
if dfc['A'][i]==dfc['A'][i+1]:
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py", line 1071, in __getitem__
result = self.index.get_value(self, key)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 4730, in get_value
return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
File "pandas/_libs/index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
File "pandas/_libs/index.pyx", line 88, in pandas._libs.index.IndexEngine.get_value
File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 992, in pandas._libs.hashtable.Int64HashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 998, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 4
Кроме того, когда я проверял dfc
значение, строка 1 уже удалена:
In [30]: dfc
Out[30]:
A B C
0 A0 B0 C0
2 A1 B1 C2
3 A2 B2 C3
Однако, если я закодирую строку 12 dfc.drop([i], inplace=True)
без inplace=True
, я тоже получу ниже с ошибкой.
In [39]: df
Out[39]:
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A1 B1 C2
3 A2 B2 C3
Что не так?