1. Я получаю данные с сервера MySQL и форматирую их в список списков.
raw_data = read_query(connection, query)
csv_data = []
for row in raw_data:
    row = list(row)
    csv_data.append(row)
  1. Преобразуйте данные в Dataframe и экспортируйте в CSV.
df = pd.DataFrame(csv_data)
df.to_csv('test.csv', index=False)

Как избавиться от b'' во всех столбцах, где он присутствует? Я попытался изменить кодировку = 'utf-8', b'' все еще там. Кажется, что кадр данных принимает b '' как строку вместо правильного байта?

0
devBear 25 Янв 2022 в 21:12
Все столбцы с буквой b содержат строку вместо чисел.
 – 
user18030662
25 Янв 2022 в 21:23

2 ответа

Лучший ответ

Используйте str.decode:

df = pd.DataFrame({'A': [b'Hello', b'world']})

          A
0  b'Hello'
1  b'world'


df['A'] = df['A'].str.decode('utf-8')
print(df)

# Output
       A
0  Hello
1  world
0
Corralien 25 Янв 2022 в 22:37
Получил эту ошибку: AttributeError: Can only use .str accessor with string values!. Did you mean: 'std'? Я использовал его как object = object.str.decode
 – 
user18030662
25 Янв 2022 в 22:35
Каков результат print(type(df['A'].iloc[0])). Замените A на имя вашего столбца.
 – 
Corralien
25 Янв 2022 в 22:39
Что такое object?
 – 
Corralien
25 Янв 2022 в 22:40
<class 'bytes'> Это то, что я получаю от print(type(df['A'].iloc[0]))
 – 
user18030662
25 Янв 2022 в 22:44
Так что мой код должен работать. Какая у вас версия Панды? А что такое object = object.str.decode?
 – 
Corralien
25 Янв 2022 в 22:46

Декодируйте элементы row.

raw_data = read_query(connection, query)
csv_data = []
for row in raw_data:
    row = list(row)
    row = [x.decode() for x in row]
    csv_data.append(row)
0
OwenAmmann 25 Янв 2022 в 21:24
Спасибо, но я получил эту ошибку: AttributeError: объект 'str' не имеет атрибута 'decode'. Возможно, Вы имели в виду: кодировать
 – 
user18030662
25 Янв 2022 в 22:08