インデックスなしでパンダデータフレームを印刷する方法


170

データフレーム全体を印刷したいが、インデックスを印刷したくない

さらに、1つの列は日時タイプです。日付ではなく、時間を出力したいだけです。

データフレームは次のようになります。

   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
あなたは、PythonではなくRで実際に作業していると私に思わせるような用語(「データフレーム」、「インデックス」)を使用しています。どうか明らかにしてください。いずれにせよ、この「データフレーム」を出力する既存のコードを見て、支援できる可能性があるかどうかを確認する必要があります。stackoverflow.com/help/mcve
zwol

...これが実際にPythonであり、それらがdatetime.datetime2列目のオブジェクトである場合strftime、適切なフォーマット文字列(おそらく"%H:%M:%S")を使用して、メソッドを使用して時間だけを印刷できると言います。
zwol

17
@Zack:DataFrameは、pandas人気のPythonデータ分析ライブラリであるの2Dデータ構造の名前です。
DSM

回答:


216
print df.to_string(index=False)

8
これはすばらしいですが、Excelにコピーするときのハンディキャップ以上の
タブセプ

7
@Rockbarコピー/エクスポートしてExcelにしたい場合は、df.to_csvとにかく使用する必要があります。
U2EF1 2017年

3
私にとって、列ラベルはデータに正当化されずに出てきます(最初にスペースがありません)。データが列ラベルより多くの文字を占めるためか、引数justify = 'left'を追加すると修正されますが、列ラベルの配置は明らかに変更されます。
ErnestScribbler 2018

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
この回答は、レポートを作成するときに表にコピーして貼り付けるのに最も効果的です。ありがとうございます。
リース

8

データフレームをきれいに印刷したい場合は、tabulateパッケージを使用できます。

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に送信したい場合は、Bufを使用するのが適切です。

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

データを方向付けるには、現在までに6つの方法があります。より適切なpanda docsで詳細を確認してください。


4

「インデックスなしでデータフレームを印刷する方法」の質問に答えるには、次のように、インデックスを空の文字列の配列(データフレームの各行に1つ)に設定できます。

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 Notebooksでは、次のスクリーンショットのようにレンダリングされます: インデックス列のない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.