인덱스없이 팬더 DataFrame을 인쇄하는 방법


170

전체 데이터 프레임을 인쇄하고 싶지만 색인을 인쇄하고 싶지 않습니다.

게다가 하나의 열은 날짜 시간 유형이며 날짜가 아닌 시간을 인쇄하고 싶습니다.

데이터 프레임은 다음과 같습니다.

   User ID           Enter Time   Activity Number
0      123  2014-07-08 00:09:00              1411
1      123  2014-07-08 00:18:00               893
2      123  2014-07-08 00:49:00              1041

나는 그것을 인쇄하고 싶다

User ID   Enter Time   Activity Number
123         00:09:00              1411
123         00:18:00               893
123         00:49:00              1041

1
파이썬이 아닌 R에서 실제로 작업하고 있다고 생각하는 용어 ( "데이터 프레임", "인덱스")를 사용하고 있습니다. 명확히하십시오. 어쨌든, 우리는이 "데이터 프레임"을 인쇄하는 기존 코드를 볼 수 있어야합니다. stackoverflow.com/help/mcve
zwol

... 이것이 실제로 파이썬이고 datetime.datetime두 번째 열의 객체라면 strftime적절한 형식 문자열 (아마도 "%H:%M:%S")을 사용하여 메소드를 사용하여 시간을 인쇄 할 수 있다고 말할 것입니다 .
zwol

17
@Zack : DataFramepandas널리 사용되는 Python 데이터 분석 라이브러리 인의 2D 데이터 구조 이름입니다 .
DSM

답변:


216
print df.to_string(index=False)

8
이것은 훌륭하지만 엑셀로 복사 할 때 핸디캡보다 더 이상 탭을 포함하지 않습니다
Rockbar

7
@Rockbar 엑셀로 복사 / 내보내기를하려면 df.to_csv어쨌든 사용해야 합니다.
U2EF1

3
나에게 열 레이블이 데이터에 맞지 않게 나옵니다 (시작 부분에 공백이 없습니다). 내 데이터가 열 레이블보다 많은 문자를 차지하기 때문일 수 있습니다. 인수 justify = 'left'를 추가하면 열 레이블의 정렬이 변경되지만 수정합니다.
ErnestScribbler

1
df.to_clipboard()Excel을 사용 하여 붙여 넣을 수도 있습니다 . Windows의 어리석은 "열린 문서를 편집 할 수 없습니다"BS를 처리하는 데 유용합니다.
BallpointBen

df.to_excel('filename.xlsx', index=False)
Sonicsmooth

30
print(df.to_csv(sep='\t', index=False))

또는 가능하면 :

print(df.to_csv(columns=['A', 'B', 'C'], sep='\t', index=False))

3
DataFrame.to_csv에 반환 값이 없으므로 어떻게 가능합니까? 인쇄 안함 만 표시됩니다.
Jung rhew

실제로 OP는 인쇄를 요청했습니다. 이 주석은 데이터 프레임을 인쇄하지 않지만 대신 CSV로 저장합니다.
바울

24

아래 줄은 인쇄 할 때 DataFrame의 색인 열을 숨 깁니다.

df.style.hide_index()

8
jinja2 패키지가 필요하며 Python 3.7에서 원하는 출력을 생성하지 않습니다
PeterXX

1
이 답변이 보고서를 작성할 때 표에 복사 / 붙여 넣기에 가장 효과적이라는 것을 알았습니다. 감사합니다!
leas

8

데이터 프레임을 예쁘게 인쇄하려면 tabulate package를 사용할 수 있습니다 .

import pandas as pd
import numpy as np
from tabulate import tabulate

def pprint_df(dframe):
    print tabulate(dframe, headers='keys', tablefmt='psql', showindex=False)

df = pd.DataFrame({'col1': np.random.randint(0, 100, 10), 
    'col2': np.random.randint(50, 100, 10), 
    'col3': np.random.randint(10, 10000, 10)})

pprint_df(df)

특히 showindex=False이름에서 알 수 있듯이을 사용하면 색인을 표시 할 수 없습니다. 결과는 다음과 같습니다.

+--------+--------+--------+
|   col1 |   col2 |   col3 |
|--------+--------+--------|
|     15 |     76 |   5175 |
|     30 |     97 |   3331 |
|     34 |     56 |   3513 |
|     50 |     65 |    203 |
|     84 |     75 |   7559 |
|     41 |     82 |    939 |
|     78 |     59 |   4971 |
|     98 |     99 |    167 |
|     81 |     99 |   6527 |
|     17 |     94 |   4267 |
+--------+--------+--------+


4

문자열 / JSON을 인쇄하려면 다음을 사용하여 해결할 수 있습니다.

print(df.to_string(index=False))

그러나 데이터를 직렬화하거나 MongoDB로 보내려면 다음과 같은 작업을 수행하는 것이 좋습니다.

document = df.to_dict(orient='list')

이제 데이터 방향을 지정하는 6 가지 방법이 있습니다. 팬더 문서 를 더 잘 확인하십시오.


4

"인덱스없이 데이터 프레임을 인쇄하는 방법"질문에 대답하려면 다음과 같이 인덱스를 빈 문자열 (데이터 프레임의 각 행마다 하나씩)의 배열로 설정할 수 있습니다.

blankIndex=[''] * len(df)
df.index=blankIndex

게시물의 데이터를 사용하는 경우 :

row1 = (123, '2014-07-08 00:09:00', 1411)
row2 = (123, '2014-07-08 00:49:00', 1041)
row3 = (123, '2014-07-08 00:09:00', 1411)
data = [row1, row2, row3]
#set up dataframe
df = pd.DataFrame(data, columns=('User ID', 'Enter Time', 'Activity Number'))
print(df)

일반적으로 다음과 같이 인쇄됩니다.

   User ID           Enter Time  Activity Number
0      123  2014-07-08 00:09:00             1411
1      123  2014-07-08 00:49:00             1041
2      123  2014-07-08 00:09:00             1411

데이터 프레임에 행이있는 수만큼 빈 문자열로 배열을 작성하면 다음과 같습니다.

blankIndex=[''] * len(df)
df.index=blankIndex
print(df)

출력에서 색인을 제거합니다.

  User ID           Enter Time  Activity Number
      123  2014-07-08 00:09:00             1411
      123  2014-07-08 00:49:00             1041
      123  2014-07-08 00:09:00             1411

Jupyter Notebook에서이 스크린 샷에 따라 렌더링됩니다. 인덱스 열이없는 Juptyer Notebooks 데이터 프레임


조금 이상하지만 IMO에서 가장 좋은 솔루션입니다.
Corel

0

df.to_string (index = False)를 사용하는 위의 많은 답변과 마찬가지로 단일 열 값을 추출 해야하는 경우가 종종 있습니다.이 경우 다음을 사용하여 .to_string으로 개별 열을 지정할 수 있습니다.

data = pd.DataFrame({'col1': np.random.randint(0, 100, 10), 
    'col2': np.random.randint(50, 100, 10), 
    'col3': np.random.randint(10, 10000, 10)})

print(data.to_string(columns=['col1'], index=False)

print(data.to_string(columns=['col1', 'col2'], index=False))

다른 곳에 붙여 넣기 (Excel)하기 위해 복사 및 색인이없는 출력을 쉽게 제공합니다. 샘플 출력 :

col1  col2    
49    62    
97    97    
87    94    
85    61    
18    55
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.