DataFrame изменяет DataType с помощью «astype» - PullRequest
0 голосов
/ 15 сентября 2018

У меня возникла следующая проблема:

У меня есть Dataframe, где я хотел бы установить десятичную дробь на фиксированную ширину, и если я изменяю "columnstyle" с помощью "apply {}", это работаетотлично, но если я экспортирую этот фрейм данных как * .txt, я получаю ошибку с другой программой, куда я хотел бы импортировать этот набор данных.Если я сделаю изменение через * .astype (float), программа сможет импортировать набор данных, но получит проблемы с табуляторами и размером каждого значения.

enter image description here

Есть ли способ установить каждое значение на фиксированный размер с помощью * .astype ()?

Например, столбец "F [HZ]" должен выглядеть так: 30,00, 10,78, 10,90

Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Вы можете установить плавающий формат в пандах

df

    name    max
0   a   1
1   b   2
2   c   2
3   d   4
4   e   1



df['max'].apply('{:.2f}'.format)

Out:

0   1.00
1   2.00
2   2.00
3   4.00
4   1.00
0 голосов
/ 15 сентября 2018

Хорошо, я сделал это так, и это работает:

COLUMNS = {0:'F [HZ]', 1:'T [°C]', 2:"""G'""", 
               3:"""G''""", 4:"""|G|""", 5:'DELTA_D'}

for ii in range(len(COLUMNS)):

    if COLUMNS[ii] == 'T [°C]':

        df[COLUMNS[ii]] = df[COLUMNS[ii]].astype(int)

    else:

        df[COLUMNS[ii]] = df[COLUMNS[ii]].astype(float).apply('{:.2f}'.format)

Спасибо всем за помощь!:)

0 голосов
/ 15 сентября 2018

Полагаю, вы используете pd.to_csv, чтобы сохранить его как текстовый файл. В этом вы можете использовать его, как показано ниже, чтобы сохранить плавающие числа с фиксированной шириной:

df = pd.DataFrame({'F[HZ]': [30, 10.78, 10.9025], 'T[C]':[-50, -50, -50]})
df.to_csv('outfile.txt', float_format='%.2f')

Кроме того, вы также можете импортировать в другие и использовать astype, чтобы округлить его до двух знаков после запятой с кодом ниже:

df['F[HZ]'] = df['F[HZ]'].astype(float).round(2)

И если вы не хотите использовать T [C] в качестве числа с плавающей запятой, вы можете установить для него целочисленный тип, как показано ниже:

df['T[C]'] = df['T[C]'].astype(int)

А чтобы показать тип данных разных столбцов, вы можете использовать следующую инструкцию print:

print(df.info())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...