Предположим, у меня есть df_test ниже, где col содержит список словарей в каждой строке. Как я могу преобразовать все значения X в str?

df_test = pd.DataFrame({'col': [[{'X': 1}, {'X': 1}], [{'X': 1}, {'X': 1}, {'X': 1}], [{'X': 1}]]})

Df_test :

    col
0   [{'X': 1}, {'X': 1}]
1   [{'X': 1}, {'X': 1}, {'X': 1}]
2   [{'X': 1}]

Исходные данные содержат X значения типа bson.objectid.ObjectId.

0
CHRD 10 Фев 2020 в 19:07

2 ответа

Лучший ответ

Чтобы изменить ключ ('X') на его str:

>>> df_test.col.apply(lambda x: [{str(k): v for k, v in d.items()} for d in x])
0              [{'X': 1}, {'X': 1}]
1    [{'X': 1}, {'X': 1}, {'X': 1}]
2                        [{'X': 1}]
Name: col, dtype: object

Чтобы изменить значение (1) на его str:

>>> df_test.col.apply(lambda x: [{k: str(v) for k, v in d.items()} for d in x])
0                [{'X': '1'}, {'X': '1'}]
1    [{'X': '1'}, {'X': '1'}, {'X': '1'}]
2                            [{'X': '1'}]
Name: col, dtype: object
1
r.ook 10 Фев 2020 в 16:15
df_test['col'] = [str(key) for key in dict for dict in df_test['col']]
0
double-beep 10 Фев 2020 в 16:41