इंडेक्स के बिना पांडा डेटाफ्रैम को कैसे प्रिंट करें


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") के साथ प्रिंट कर सकते हैं ।
ज़ूल

17
@Zack: एक लोकप्रिय पायथन डेटा विश्लेषण पुस्तकालय DataFrameमें 2 डी डेटा संरचना का नाम है pandas
DSM

जवाबों:


216
print df.to_string(index=False)

8
यह अच्छा है, लेकिन यह अब और टैब-सितंबर शामिल नहीं है जो एक बाधा से है जब एक्सेल में कॉपी करने
Rockbar

7
@ रबार यदि आप कॉपी / निर्यात करना चाहते हैं तो आप को df.to_csvवैसे भी उपयोग करना चाहिए ।
U2EF1

3
मेरे लिए कॉलम लेबल डेटा के लिए उचित नहीं हैं (शुरू में गायब हुए स्थान हैं)। हो सकता है क्योंकि मेरा डेटा कॉलम लेबल से अधिक वर्ण लेता है। तर्क जोड़ना न्यायसंगत = 'बायाँ' इसे ठीक करता है, हालांकि स्पष्ट रूप से कॉलम लेबल के संरेखण को बदलता है।
ErnestScribbler

1
आप उपयोग कर सकते हैं df.to_clipboard()और फिर एक्सेल में पेस्ट कर सकते हैं । विंडोज के बेवकूफ से निपटने के लिए उपयोगी "आप एक खुले दस्तावेज़ को संपादित नहीं कर सकते हैं" बीएस।
बॉलपॉइंटबैन

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

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 में रिटर्न वैल्यू नहीं है? मुझे केवल एक ही प्रिंट आउट मिलता है।
जंग

दरअसल, ओपी ने छापने के लिए कहा। यह टिप्पणी डेटाफ़्रेम को प्रिंट नहीं करती है, बल्कि इसे CSV में सहेजती है।
पॉल

24

जब आप प्रिंट करेंगे तो नीचे दी गई लाइन DataFrame के इंडेक्स कॉलम को छिपा देगी

df.style.hide_index()

8
Jinja2 पैकेज की आवश्यकता है और
पीटरएक्सएक्स

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))

Buf यदि आप डेटा को क्रमबद्ध करना चाहते हैं या यहां तक ​​कि 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 नोटबुक में इस स्क्रीनशॉट के अनुसार प्रस्तुत करना होगा: Juptyer Notebooks डेटाफ़्रेम बिना किसी इंडेक्स कॉलम के साथ


थोड़ा अजीब होने के बावजूद, यह यहाँ का सबसे अच्छा समाधान है IMO।
Corel

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.