DataFrame通过使用“ astype”更改DataType

时间:2018-09-15 16:40:55

标签: python pandas dataframe

我遇到以下问题:

我有一个数据框,我想将小数点设置为固定宽度, 如果我通过使用“ apply {}”更改“ columnstyle”,则效果很好,但是如果我将此数据帧导出为* .txt,则其他程序将出错,我想在该程序中导入该数据集。如果我通过* .astype(float)进行更改,则程序可以导入数据集,但会出现制表符和每个值的大小的问题。

enter image description here

是否可以使用* .astype()将每个值设置为固定大小?

例如,“ F [HZ]”列应类似于:30.00、10.78、10.90

感谢帮助!

3 个答案:

答案 0 :(得分:2)

我想您正在使用pd.to_csv将其另存为文本文件。在这种情况下,您可以按以下方式使用它以固定宽度保存浮点数:

(NR==1){print $0}

另外,您还可以导入其他内容,并使用astype将其舍入到以下代码的小数点后两位:

$0

如果您不希望T [C]浮点,则可以将其设置为整数类型,如下所示:

awk '($1=$1);(NR==1) && gsub(/./,".")'  FS=, OFS=" ^ " file

要显示不同列的数据类型,可以使用以下打印语句:

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

答案 1 :(得分:0)

您可以在熊猫中设置浮动格式

df

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



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

出局:

0   1.00
1   2.00
2   2.00
3   4.00
4   1.00

答案 2 :(得分:0)

好吧,我是这样做的,而且有效:

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)

感谢大家的帮助! :)