Сравните значения столбцов между столбцами, имеющими одинаковый суффикс, но разные префиксы в имени.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сравните значения столбцов между столбцами, имеющими одинаковый суффикс, но разные префиксы в имени.

Сообщение Anonymous »

Буду признателен за советы по оптимизации.
У меня есть фрейм данных pandas, который имеет около 4500 столбцов и 50 000 строк.
Есть 2 типа столбцов, один из которых начинается с буквы "A", а другой - с буквы "B".
примеры столбцов
[id, A.sellervalue, A.buyervalue, A.ratingvalue, B.sellervalue, B.buyervalue, B.ratingvalue]

Я написал этот блок кода, который будет сравнивать значения столбцов с одинаковым суффиксом, но с разными префиксами (A.sellervalue и B.sellervalue, A.buyervalue и B.buyervalue и т. д.). и создайте новый фрейм данных, который будет идентифицировать несовпадающую строку по имени столбца и соответствующим значениям.
Это не очень эффективно.
Я работал, если таковые имеются оптимизацию я могу сделать здесь либо с помощью методов Pandas, либо с помощью pyspark.
Спасибо
def find_mismatch_common_columns_values(df, A_cols_without_prefix, B_cols_without_prefix):
set_A_cols_without_prefix = set(A_cols_without_prefix)
set_B_cols_without_prefix = set(B_cols_without_prefix)
common_columns = list(set_A_cols_without_prefix.intersection(set_B_cols_without_prefix))

print("\n Size of common columns between both ",len(common_columns))

result_list = []
for col in common_columns:
A_col = f'A.{col}'
B_col = f'B.{col}'

for idx, row in df.iterrows():

A_value = row[A_col]
B_value = row[B_col]

if isinstance(A_value, float) :
A_value = round(float(A_value), 6)

if isinstance(B_value, float):
B_value = round(float(B_value), 6)

if A_value != B_value and (not pd.isnull(A_value) and not pd.isnull(B_value)):
result_list.append({
'row': idx,
'column_name': col,
'A_value': A_value,
'B_value': B_value
})

result_df = pd.DataFrame(result_list)
return result_df


Подробнее здесь: https://stackoverflow.com/questions/786 ... rent-prefi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»