我遇到以下问题:
我有一个数据框,我想将小数点设置为固定宽度, 如果我通过使用“ apply {}”更改“ columnstyle”,则效果很好,但是如果我将此数据帧导出为* .txt,则其他程序将出错,我想在该程序中导入该数据集。如果我通过* .astype(float)进行更改,则程序可以导入数据集,但会出现制表符和每个值的大小的问题。
是否可以使用* .astype()将每个值设置为固定大小?
例如,“ F [HZ]”列应类似于:30.00、10.78、10.90
感谢帮助!
答案 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)
感谢大家的帮助! :)