Как проверить, содержит ли Dataframe список или словарь - PullRequest
0 голосов
/ 30 марта 2020

У меня есть фрейм данных:

col1   col2   col3       col4   
A     11    [{'id':2}]    {"price": 0.0}
B     21    [{'id':3}]    {"price": 2.0}
C     31    [{'id':4}]    {"price": 3.0}

Я хочу выяснить, какие все столбцы имеют тип данных «список» и «словарь», и, вероятно, сохранить результат в другом списке. Как я go об этом?

, когда я использую это: data.applymap(type).apply(pd.value_counts) вывод:

col1  col2        col3            col4
0    a    11  [{'id':2}]  {"price": 0.0}
1    b    21  [{'id':3}]  {"price": 2.0}
2    c    31  [{'id':4}]  {"price": 3.0}

1 Ответ

2 голосов
/ 30 марта 2020

IIU C,

мы можем использовать apply и literal_eval из стандартной библиотеки ast для создания словаря:

по соображениям производительности, позволяет работать с первым строка фрейма данных в виде apply в вычислительном отношении довольно тяжелая.

from ast import literal_eval
data_dict = {}
for col in df.columns:
    try:
        col_type = df[col].iloc[:1].apply(literal_eval).apply(type)[0]
        data_dict[col] = col_type
    except (ValueError,SyntaxError):
        data_dict[col] = 'unable to evaluate'

print(data_dict)

{'col1': 'unable to evaluate',
 'col2': 'unable to evaluate',
 'col3': list,
 'col4': dict}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...