Я пытаюсь сравнить два столбца и типа фреймов данных, чтобы проверить равенство, ожидается, что строки будут разными.
Я использую pandas версии 1.1.2
pd.__version__
'1.1.2'
if (df1.columns.difference(df2.columns).empty) and
(df1.dtypes == df2.dtypes).all()
Но в этой строке есть ошибки:
(df1.dtypes == df2.dtypes).all()
Traceback (most recent call last):
File "", line 1, in
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/common.py", line 65, in new_method
return method(self, other)
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/__init__.py", line 370, in wrapper
res_values = comparison_op(lvalues, rvalues, op)
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/array_ops.py", line 239, in comparison_op
res_values = comp_method_OBJECT_ARRAY(op, lvalues, rvalues)
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/array_ops.py", line 53, in comp_method_OBJECT_ARRAY
result = libops.vec_compare(x.ravel(), y.ravel(), op)
File "pandas/_libs/ops.pyx", line 169, in pandas._libs.ops.vec_compare
TypeError: Cannot interpret 'StringDtype' as a data type
Что происходит и как обойти эту проблему?
Обновление типов данных для первого кадра данных:
df1.dtypes
update_timestamp string
issue_type_desc string
id Int64
project_key string
teamname string
issue_key string
summary string
created_at string
updated_at string
updated_at_utc string
status_updated_at string
resolved_at string
closed_at string
due_date string
age_ts Int64
resolution_seconds string
reporter_name string
assignee string
issue_type_id Int64
priority_id Int64
status_id Int64
status_detail string
status_category string
resolution_id string
security_level_id Int64
parent_issue_key string
subtask_parent_key string
subtask_parent_id Int64
subtask_key string
epickey string
epic_id Int64
epic_parent_key string
customfield_fversion string
customfield_10004 string
epicdesc string
customfield_10005 string
sprint string
customfield_10003_original string
customfield_10003_status string
storypoint float64
storyhours float64
subtaskhours string
subcategory string
customfield_feature string
zephyr_last_executed_at string
zephyr_last_executed_by string
zephyr_last_execution_status string
fix_versions string
deleted Int64
lastupdateddatetime string
dtype: object
И для типов данных для второго кадра данных:
df2.dtypes
update_timestamp string
issue_type_desc string
id Int64
project_key string
teamname string
issue_key string
summary string
created_at string
updated_at string
updated_at_utc string
status_updated_at string
resolved_at string
closed_at string
due_date string
age_ts Int64
resolution_seconds string
reporter_name string
assignee string
issue_type_id Int64
priority_id Int64
status_id Int64
status_detail string
status_category string
resolution_id string
security_level_id Int64
parent_issue_key string
subtask_parent_key string
subtask_parent_id Int64
subtask_key string
epickey string
epic_id Int64
epic_parent_key string
customfield_fversion string
customfield_10004 string
epicdesc string
customfield_10005 string
sprint string
customfield_10003_original string
customfield_10003_status string
storypoint string
storyhours string
subtaskhours string
subcategory string
customfield_feature string
zephyr_last_executed_at string
zephyr_last_executed_by string
zephyr_last_execution_status string
fix_versions string
deleted Int64
lastupdateddatetime string
dtype: object
Обновление На данный момент мне удалось обойти эту ошибку, написав функцию для сравнения, но это не кажется идеальным решением. Я ожидаю, что будет способ сравнить dtype с этим новым типом расширения:
def compare_dataframe_column_dtypes(df_compare1, df_compare2):
"""Since pandas 1.0.0 and the inception of the StringDtype
doing `df1.dtypes == df2.dtypes` will fail on StringDtype,
so in order to compare dataframes one must catch this error
and convert to prior pd 1.0.0 string dtype and compare again.
"""
df1 = df_compare1.copy()
df2 = df_compare2.copy()
try:
if (df1.dtypes == df2.dtypes).all():
return True
return False
except Exception as ex:
logger.error("%s. Converting datatypes StringDType to str and then comparing again", ex.args[0])
for column in df1:
if pd.StringDtype.is_dtype(df1[column]):
df1[column] = df1[column].astype(str)
for column2 in df2:
if pd.StringDtype.is_dtype(df2[column2]):
df2[column2] = df2[column2].astype(str)
if (df1.dtypes == df2.dtypes).all():
return True
return False
Подробнее здесь: https://stackoverflow.com/questions/650 ... s-a-data-t
Сравните столбцы фрейма данных: TypeError: невозможно интерпретировать StringDtype как тип данных. ⇐ Python
Программы на Python
1772366485
Anonymous
Я пытаюсь сравнить два столбца и типа фреймов данных, чтобы проверить равенство, ожидается, что строки будут разными.
Я использую pandas версии 1.1.2
pd.__version__
'1.1.2'
if (df1.columns.difference(df2.columns).empty) and
(df1.dtypes == df2.dtypes).all()
Но в этой строке есть ошибки:
(df1.dtypes == df2.dtypes).all()
Traceback (most recent call last):
File "", line 1, in
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/common.py", line 65, in new_method
return method(self, other)
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/__init__.py", line 370, in wrapper
res_values = comparison_op(lvalues, rvalues, op)
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/array_ops.py", line 239, in comparison_op
res_values = comp_method_OBJECT_ARRAY(op, lvalues, rvalues)
File "/Users/vfrank/dev-working/venv/lib/python3.7/site-packages/pandas/core/ops/array_ops.py", line 53, in comp_method_OBJECT_ARRAY
result = libops.vec_compare(x.ravel(), y.ravel(), op)
File "pandas/_libs/ops.pyx", line 169, in pandas._libs.ops.vec_compare
TypeError: Cannot interpret 'StringDtype' as a data type
Что происходит и как обойти эту проблему?
Обновление типов данных для первого кадра данных:
df1.dtypes
update_timestamp string
issue_type_desc string
id Int64
project_key string
teamname string
issue_key string
summary string
created_at string
updated_at string
updated_at_utc string
status_updated_at string
resolved_at string
closed_at string
due_date string
age_ts Int64
resolution_seconds string
reporter_name string
assignee string
issue_type_id Int64
priority_id Int64
status_id Int64
status_detail string
status_category string
resolution_id string
security_level_id Int64
parent_issue_key string
subtask_parent_key string
subtask_parent_id Int64
subtask_key string
epickey string
epic_id Int64
epic_parent_key string
customfield_fversion string
customfield_10004 string
epicdesc string
customfield_10005 string
sprint string
customfield_10003_original string
customfield_10003_status string
storypoint float64
storyhours float64
subtaskhours string
subcategory string
customfield_feature string
zephyr_last_executed_at string
zephyr_last_executed_by string
zephyr_last_execution_status string
fix_versions string
deleted Int64
lastupdateddatetime string
dtype: object
И для типов данных для второго кадра данных:
df2.dtypes
update_timestamp string
issue_type_desc string
id Int64
project_key string
teamname string
issue_key string
summary string
created_at string
updated_at string
updated_at_utc string
status_updated_at string
resolved_at string
closed_at string
due_date string
age_ts Int64
resolution_seconds string
reporter_name string
assignee string
issue_type_id Int64
priority_id Int64
status_id Int64
status_detail string
status_category string
resolution_id string
security_level_id Int64
parent_issue_key string
subtask_parent_key string
subtask_parent_id Int64
subtask_key string
epickey string
epic_id Int64
epic_parent_key string
customfield_fversion string
customfield_10004 string
epicdesc string
customfield_10005 string
sprint string
customfield_10003_original string
customfield_10003_status string
storypoint string
storyhours string
subtaskhours string
subcategory string
customfield_feature string
zephyr_last_executed_at string
zephyr_last_executed_by string
zephyr_last_execution_status string
fix_versions string
deleted Int64
lastupdateddatetime string
dtype: object
Обновление На данный момент мне удалось обойти эту ошибку, написав функцию для сравнения, но это не кажется идеальным решением. Я ожидаю, что будет способ сравнить dtype с этим новым типом расширения:
def compare_dataframe_column_dtypes(df_compare1, df_compare2):
"""Since pandas 1.0.0 and the inception of the StringDtype
doing `df1.dtypes == df2.dtypes` will fail on StringDtype,
so in order to compare dataframes one must catch this error
and convert to prior pd 1.0.0 string dtype and compare again.
"""
df1 = df_compare1.copy()
df2 = df_compare2.copy()
try:
if (df1.dtypes == df2.dtypes).all():
return True
return False
except Exception as ex:
logger.error("%s. Converting datatypes StringDType to str and then comparing again", ex.args[0])
for column in df1:
if pd.StringDtype.is_dtype(df1[column]):
df1[column] = df1[column].astype(str)
for column2 in df2:
if pd.StringDtype.is_dtype(df2[column2]):
df2[column2] = df2[column2].astype(str)
if (df1.dtypes == df2.dtypes).all():
return True
return False
Подробнее здесь: [url]https://stackoverflow.com/questions/65079545/compare-dataframe-columns-typeerror-cannot-interpret-stringdtype-as-a-data-t[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия