2014-11-08 1 views
1

머리카락을 뽑아 냈지만 멋지게 표로 만들어진 출력을 얻을 수 없습니다.np.savetxt 스타일 pandas에 대한 탁월한 결과 출력 DataFrame.to_csv

한마디로

, 내가 같이하는 .to_csv() 방법으로 저장 한 파일을 싶습니다

   K0   V0  dK_dT   a    b 
value 237.496942 82.845746 -0.037012 0.000006 1.359708e-08 
std  2.094088 0.012948 0.004415 0.000001 1.550236e-09 

하지만 내가 할 수있는 것과을 print result.to_csv(float_format='%10.2g', sep=' ') 나에게 제공합니다

K0 V0 dK_dT a b 
value " 2.4e+02" "  83" " -0.037" " 5.8e-06" " 1.4e-08" 
std "  2.1" "  0.013" " 0.0044" "  1e-06" " 1.6e-09" 
  1. 헤더가 자동으로 정렬되지 않습니다.
  2. 따옴표로 인해 동일한 폭의 흐름이 중단됩니다.

csv.QUOTE_MINIMAL으로 설정하려고 시도했으나 근본적으로는 행운이 없습니다. 내가 아는 한, NumPy는 savetxt(format='%10.2g')으로 쉽게이 작업을 수행 할 수 있습니다.

내가 놓친 것 없나요?

답변

1

대신 to_csv(), 당신은 to_string()을 사용할 수 있습니다. 예를 들어,

In [80]: df 
Out[80]: 
      A   B    C 
a 123.456789 0.702380 7.071752e-08 
b 1.230000 0.323674 6.075386e-08 
c 0..621974 7.918532e-08 
d 0.000000 0.818291 5.480469e-08 
e -9.876543 0.117978 9.831873e-08 

In [81]: txt = df.to_string() 

In [82]: print txt 
      A   B    C 
a 123.456789 0.702380 7.071752e-08 
b 1.230000 0.323674 6.075386e-08 
c 0..621974 7.918532e-08 
d 0.000000 0.818291 5.480469e-08 
e -9.876543 0.117978 9.831873e-08 

그런 다음 파일에 txt을 작성할 수 있습니다.

+0

굉장! 가장 직접적인 방법이 있어야한다는 것을 알고있었습니다. 그러나 왜이 방법은'float_format'에 대한 간단한 문자열을 허용하지 않지만 함수 여야 만합니까? to_csv()와 같은가요? – terencezl

+0

잘 모르겠습니다. 나도 혼란 스러웠다. 비슷한 함수에서 같은 인수 이름을 사용하는 것이 불행한 API 디자인 선택이라는 점에서 다르게 작동합니다. –

0

다음은 바보 같은 속임수입니다. ASCII BEL (벨)을 인용 문자로 사용하십시오.

result.to_csv(float_format='%10.2g', sep=' ', index=False, quotechar='\a') 

를 또는 더미 문자를 사용하고 마지막에 교체 : 적어도 내 시스템이 전혀 따옴표를 인쇄합니다

ss = result.to_csv(float_format='%10.2g', sep=' ', index=False, quotechar='^') 
print ss.replace('^', '')