#python #pandas #dataframe #data-science #data-analysis
#python #pandas #фрейм данных #наука о данных #анализ данных
Вопрос:
У меня есть 2 фрейма данных, оба из которых относятся к странам 1-первый имеет 183 строки 2-второй имеет 156 строк, оба они имеют информацию об импорте друг о друге Мне нужен один столбец из первого и один столбец из второго Моя цель — создать единый фрейм данных, содержащий оба столбца, которые мне нужны, и имя файла.содержат, что оба имени данных являются общими.
Это то, что я сделал, и сообщение, которое я получил
for i in range(183) :
for j in range(156):
if df['Country'][i]==df_happy['Country or region'][j]:
df.drop(i,axis=0,inplace=True)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-25-e078ef71e219> in <module>
1 for i in range(183) :
2 for j in range(156):
----> 3 if df['Country'][i]==df_happy['Country or region'][j]:
4 df.drop(i,axis=0,inplace=True)
/opt/conda/envs/Python-3.7-main/lib/python3.7/site-packages/pandas/core/series.py in __getitem__(self, key)
869 key = com.apply_if_callable(key, self)
870 try:
--> 871 result = self.index.get_value(self, key)
872
873 if not is_scalar(result):
/opt/conda/envs/Python-3.7-main/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_value(self, series, key)
4403 k = self._convert_scalar_indexer(k, kind="getitem")
4404 try:
-> 4405 return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
4406 except KeyError as e1:
4407 if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 1
Ответ №1:
Вы можете объединить оба фрейма данных:
newdf=df.merge(df_happy,how='left', left_on='Country', right_on='Country or region')
а затем удалите дополнительные столбцы с помощью:
newdf.drop(columns=['B', 'C'])