2017-02-28 59 views
1

我想將每個元素的熊貓數據幀更改爲指定的長度和小數位數。長度意味着字符的數量。例如,元素-23.5556 是8個字符長度(包含minuspoint)。我想修改它以總共包含2個十進制數字的6個字符長度,例如-23.56。如果少於6個字符,請使用space來填充。最後,新df的每個元素之間沒有分離。如何修改熊貓數據幀的元素長度?

name  x     y   elev  m1  m2 
136 5210580.00000 5846400.000000 43.3 -28.2 -24.2 
246 5373860.00000 5809680.000000 36.19 -25  -22.3 
349 5361120.00000 5735330.000000 49.46 -24.7 -21.2 
353 5521370.00000 5770740.000000 17.74 -26  -20.5 
425 5095630.00000 5528200.000000 58.14 -30.3 -26.1 
434 5198630.00000 5570740.000000 73.26 -30.2 -26 
442 5373170.00000 5593290.000000 37.17 -22.9 -18.3 

請求的每個列的格式:

 charactors decimal digits 
name  3    0 
x   14    2 
y   14    2 
elev  4    1 
m1   6    2 
m2   6    2 

df格式,我想:

1365210580.00 5846400.00 43.3-28.2 -24.2 
2465373860.00 5809680.00 36.1-25.0 -22.3 
3495361120.00 5735330.00 49.4-24.7 -21.2 
3535521370.00 5770740.00 17.7-26.0 -20.5 
4255095630.00 5528200.00 58.1-30.3 -26.1 
4345198630.00 5570740.00 73.2-30.2 -26.0 
4425373170.00 5593290.00 37.1-22.9 -18.3 

最後,保存新df作爲.dat固定的ASCII格式。 哪個工具可以在熊貓中做到這一點?

回答

1

您可以使用字符串格式化

sf = '{name:3.0f}{x:<14.2f}{y:<14.2f}{elev:<4.1f}{m1:<6.1f}{m2:6.1f}'.format 
df.apply(lambda r: sf(**r), 1) 

0 1365210580.00 5846400.00 43.3-28.2 -24.2 
1 2465373860.00 5809680.00 36.2-25.0 -22.3 
2 3495361120.00 5735330.00 49.5-24.7 -21.2 
3 3535521370.00 5770740.00 17.7-26.0 -20.5 
4 4255095630.00 5528200.00 58.1-30.3 -26.1 
5 4345198630.00 5570740.00 73.3-30.2 -26.0 
6 4425373170.00 5593290.00 37.2-22.9 -18.3 
0

你需要

df.round(2) 

得到的DF

name x y  elev m1 m2 
0 136 5210580 5846400 43.30 -28.2 -24.2 
1 246 5373860 5809680 36.19 -25.0 -22.3 
2 349 5361120 5735330 49.46 -24.7 -21.2 
3 353 5521370 5770740 17.74 -26.0 -20.5 
4 425 5095630 5528200 58.14 -30.3 -26.1 
5 434 5198630 5570740 73.26 -30.2 -26.0 
6 442 5373170 5593290 37.17 -22.9 -18.3