Как насчет этого?
мы можем использовать select_dtypes
и передавать их в список для подсчета длины.
col_floats = df.select.dtypes(include='float').columns.tolist()
col_strings = df.select.dtypes(include='object').columns.tolist()
if len(col_floats) > len(col_strings):
df.columns.map(lambda x : 'Values ' + x)
else:
df.columns.map(lambda x : 'AOR ' + x)
вы можете редактировать логику для вашего варианта использования, ноТрудно сказать, что вы хотите, без вашего образца набора данных и примера вывода.
Редактировать
Глядя на свой DF, я вижу, что вы хотите проверить числа в каждом ряду данных, чтобы увидеть, какие из них больше, поскольку у нас нет текстовой выборки вашего кадра данных.трудно сказать, но что-то вроде этого может сработать:
new_name = []
for columns in df.columns:
n = pd.to_numeric(df[f'{columns}'],errors='coerce')
if n.isna().sum() > n.dropna().count(): # tests if strings are greater than numbers
new_name.append('AOR')
else:
new_name.append('Value')
new_col_dict = dict(zip(df.columns.tolist(),new_name))
Вы можете просто назначить new_names для вашего столбца и проверить вывод с помощью словаря new_col_dict
.
, тестируя самостоятельноС кадром данных, в который я добавил несколько случайных целых чисел в столбцы объекта, я получил следующее:
{'Business Date': 'Value',
'First Name': 'AOR',
'Hours': 'Value',
'Last Name': 'AOR',
'Number': 'Value',
'Pay Code': 'Value', # I added more ints than strings to this column and the test above worked.
'Pay Time End': 'Value',
'Pay Time Start': 'Value',
'Site Name': 'AOR'}