কিভাবে সূচি ছাড়াই পান্ডাস ডেটা ফ্রেম প্রিন্ট করবেন


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
আপনি পরিভাষা ("ডেটা ফ্রেম", "সূচক") ব্যবহার করছেন যা আমাকে মনে করে যে আপনি আসলে আরে কাজ করছেন, পাইথন নয়। পরিষ্কার করে বলো. নির্বিশেষে, আমাদের বিদ্যমান কোডটি দেখতে হবে যা এই "ডেটা ফ্রেম" প্রিন্ট করে যাতে সাহায্য করার সুযোগ পাওয়ার কোনও সুযোগ নেই। অনুগ্রহ করে পড়ুন এবং নির্দেশাবলী অনুসরণ করুন stackoverflow.com/help/mcve
zwol

... আমি বলব যে এটি যদি আসলে পাইথন হয় এবং সেগুলি datetime.datetimeদ্বিতীয় কলামে অবজেক্ট হয় তবে আপনি strftimeউপযুক্ত বিন্যাসের স্ট্রিং (সম্ভবত "%H:%M:%S") দিয়ে পদ্ধতিটি ব্যবহার করে ঠিক সময় মুদ্রণ করতে পারেন ।
zwol

17
@ জ্যাক: 2 পাই DataFrameডেটা স্ট্রাকচারের নাম pandas, একটি জনপ্রিয় পাইথন ডেটা বিশ্লেষণ গ্রন্থাগার।
ডিএসএম

উত্তর:


216
print df.to_string(index=False)

8
এটি দুর্দান্ত, তবে এটিতে ট্যাব-সেপটি আর নেই যা এক্সেল করতে অনুলিপি করার সময় প্রতিবন্ধকতার চেয়ে বেশি
রকবার

7
@ রকবার আপনি যদি এক্সেল করতে অনুলিপি / রফতানি করতে চান তবে আপনাকে df.to_csvযেভাবেই ব্যবহার করা উচিত ।
U2EF1

3
আমার জন্য কলামের লেবেলগুলি ডেটাতে ন্যায়সঙ্গত না হয়ে আসে (শুরুতে ফাঁকা ফাঁকা স্থান রয়েছে)। হতে পারে কারণ আমার ডেটা কলাম লেবেলের চেয়ে বেশি অক্ষর নিয়েছে। যুক্তি যুক্তিযুক্ত = 'বাম' যুক্ত করা এটি সংশোধন করে, যদিও স্পষ্টতই কলাম লেবেলের প্রান্তিককরণ পরিবর্তন করে।
আর্নেস্টস্প্লিবলার

1
আপনি df.to_clipboard()এক্সেল ব্যবহার করতে পারেন এবং তারপরে পেস্ট করতে পারেন । উইন্ডোজ এর বোকা সাথে মোকাবেলা করার জন্য দরকারী "আপনি একটি খোলার নথি" BS সম্পাদনা করতে পারবেন না।
বলপয়েন্টবেন

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

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

বা সম্ভবত:

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

3
ডেটাফ্রেম.টো_সিএসভি-র কোনও ফেরতের মান না থাকায় এটি কীভাবে সম্ভব? আমি পাই না শুধুমাত্র মুদ্রিত আউট।
জং রাউজ

আসলে, ওপি মুদ্রণ করতে বলেছে। এই মন্তব্যটি ডেটা ফ্রেমটি মুদ্রণ করে না, বরং এটি সিএসভিতে সংরক্ষণ করে।
পল

24

নীচের লাইনটি যখন আপনি মুদ্রণ করবেন তখন ডেটা ফ্রেমের সূচক কলামটি লুকিয়ে রাখবে

df.style.hide_index()

8
জিনজা ২ প্যাকেজটির প্রয়োজন এবং পাইথন ৩.7 এর সাথে কাঙ্ক্ষিত আউটপুট উত্পাদন করে না
পিটারএক্সএক্স

1
আমি এই প্রতিবেদন তৈরি করার সময় একটি উত্তর টেবিলের অনুলিপি / অনুলিপি করার পক্ষে সবচেয়ে কার্যকর বলে মনে করি, ধন্যবাদ!
ইজারা

8

আপনি যদি ডেটা ফ্রেমগুলি প্রিন্ট করতে চান তবে আপনি ট্যাবুলেট প্যাকেজটি ব্যবহার করতে পারেন ।

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

আপনি যদি কেবল একটি স্ট্রিং / জসন মুদ্রণ করতে চান তবে এটির মাধ্যমে সমাধান করা যেতে পারে:

print(df.to_string(index=False))

বুফ আপনি যদি ডেটাটি খুব সিরিয়ালিয়াল করতে চান বা একটি মঙ্গোডিবিতে প্রেরণ করতে চান তবে এর মতো কিছু করা ভাল:

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

এবং জুপিটারে নোটবুকগুলি এই স্ক্রিনশট অনুসারে রেন্ডার করবে: বৃহত্তর নোটবুকগুলি কোনও ইনডেক্স কলাম ছাড়াই ডেটাফ্রেম করেছে


কিছুটা অদ্ভুত হওয়া সত্ত্বেও, এটি এখানে সেরা সমাধান আইএমও।
কোরেল

0

উপরের অনেকগুলি উত্তর যা df.to_string (সূচক = মিথ্যা) ব্যবহার করে এর মতো, আমি প্রায়শই মানগুলির একক কলামটি বের করার প্রয়োজন মনে করি যে ক্ষেত্রে আপনি নীচের ব্যবহার করে .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))

যা অন্য কোথাও পেস্ট করার জন্য অনুলিপি (এবং সূচক মুক্ত) আউটপুট সরবরাহ করে (এক্সেল)। নমুনা আউটপুট:

col1  col2    
49    62    
97    97    
87    94    
85    61    
18    55
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.