পান্ডাস ডেটা ফ্রেমে খুব দীর্ঘ স্ট্রিং সম্পূর্ণ মুদ্রণ করুন


116

আমি আপাতদৃষ্টিতে খুব সহজ জিনিসটির সাথে লড়াই করছি I আমার কাছে খুব দীর্ঘ স্ট্রিংযুক্ত একটি পান্ডাস ডেটা ফ্রেম রয়েছে।

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

এখন যখন আমি একই মুদ্রণের চেষ্টা করি তখন আমি পুরো স্ট্রিংটি দেখতে পাই না বরং স্ট্রিংয়ের কেবলমাত্র একটি অংশই দেখি।

আমি নিম্নলিখিত বিকল্পগুলি চেষ্টা করেছিলাম

  • ব্যবহার print(df.iloc[2])
  • ব্যবহার to_html
  • ব্যবহার to_string
  • স্ট্যাকওভারফ্লো উত্তরগুলির মধ্যে একটিতে পান্ডাস প্রদর্শন বিকল্পটি ব্যবহার করে কলামের প্রস্থ বৃদ্ধি করার পরামর্শ দেওয়া হয়েছিল, এটি কোনও কাজ করে না।
  • কীভাবে set_printoptionsআমাকে সাহায্য করবে আমিও পাইনি ।

কোন ধারণা প্রশংসা। দেখতে খুব সহজ লাগছে, তবে তা পাচ্ছে না!

উত্তর:


176

আপনি options.display.max_colwidthডিফল্ট উপস্থাপনায় আরও দেখতে চান তা নির্দিষ্ট করতে আপনি ব্যবহার করতে পারেন :

In [2]: df
Out[2]:
                                                 one
0                                                one
1                                                two
2  This is very long string very long string very...

In [3]: pd.options.display.max_colwidth
Out[3]: 50

In [4]: pd.options.display.max_colwidth = 100

In [5]: df
Out[5]:
                                                                               one
0                                                                              one
1                                                                              two
2  This is very long string very long string very long string veryvery long string

এবং প্রকৃতপক্ষে, আপনি যদি কেবলমাত্র একটি মানটি অ্যাক্সেস করে তা পরীক্ষা করতে চান (একটি স্কেলার হিসাবে, যেমন একটি সারি হিসাবে df.iloc[2]নয়) আপনিও পুরো স্ট্রিংটি দেখতে পাবেন:

In [7]: df.iloc[2,0]    # or df.loc[2,'one']
Out[7]: 'This is very long string very long string very long string veryvery long string'

2
df.iloc [2,0] - কাজ করে না - আমি প্রথম এবং তৃতীয় সারিতে মুদ্রণ করব এবং
কেটে দেব

এটি তৃতীয় সারির এবং প্রথম কলামের উপাদান চাইলে এটি কাজ করে। আপনি যদি অন্য কিছু চান তবে দয়া করে একটি নতুন প্রশ্ন খুলুন।
জুরিস

এটি কাজ করে, thx! আমার কাছে ১ টি কলামে জিপ কোডের একটি তালিকা রয়েছে এবং একটি ফাংশন ব্যবহার করে ন্যূনতম এবং সর্বাধিক কলামটি খুঁজে পেতে প্রয়োগ করুন: df ['zipcodeMinMax'] = df.loc [:, ['zipcodeList']]। প্রয়োগ করুন (createMinMaxZipcode, অক্ষ = 1)। সুতরাং ক্রিয়াকলাপের মধ্যে আমি সিরিজের (স্ট্রিংজপকডস = জিপকোডলিস্ট.টো_স্ট্রিং (শিরোনাম = মিথ্যা, সূচক = মিথ্যা)) করতে_আপনি করব do জিপকোডের দীর্ঘ তালিকাগুলির ফলস্বরূপ শেষে 3 টি বিন্দু যেমন "1111 ..."। প্রকৃতপক্ষে এটি ঘটে না যদি আপনি সূচক এবং কলামের উপর ভিত্তি করে মানগুলি নির্বাচন করেন (একটি স্কেলার হিসাবে)। আমার প্রশ্ন: কেন এমন আচরণ? প্রয়োগকে প্রভাবিত করার জন্য ডিসপ্লে বিকল্পগুলি সেট করা আমার কাছে অদ্ভুত বলে মনে হচ্ছে? ধন্যবাদ!
ওয়াউটার

1
@ যদি আপনার আলাদা প্রশ্ন থাকে তবে এখানে মন্তব্য করার পরিবর্তে নতুনকে জিজ্ঞাসা করা ভাল
জরিস

1
এটি একাধিক লাইনের সাথে অনুচ্ছেদের মতো বড় স্ট্রিংয়ের জন্য কাজ করে না।
devssh

37

pd.set_option('display.max_colwidth', -1)স্বয়ংক্রিয় লাইনব্রেকস এবং মাল্টি-লাইন কক্ষগুলির জন্য ব্যবহার করুন ।

সম্পূর্ণরূপে পান্ডাস সহ জুপিটারগুলি কীভাবে ব্যবহার করতে হয় তা এই এক দুর্দান্ত উত্স।


6
pd.set_option('display.max_colwidth', None)নতুন সংস্করণগুলির জন্য
কুকি ম্যানস্টার

এটি সর্বোত্তম উত্তর
Clancy

17

আরেকটি, খুব সহজ পদ্ধতির তালিকার ফাংশন কল করা:

list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']

উল্লেখ করার মতো মূল্য নেই, পুরো কলামগুলি তালিকাভুক্ত করা ভাল নয়, তবে একটি সাধারণ লাইনের জন্য - কেন নয়


1
যদি আপনি কিছু অনুসন্ধানের মানদণ্ডের ভিত্তিতে আপনার ডিএফকে ঝকঝকে করে নিচ্ছেন এবং এটি কোনও এক লাইনে নেমে গেছে তবে এটি কার্যকর হয় না। এটি সবচেয়ে সহজ উপায়, যে কোনও উপায়ে ডিবাগিংয়ের জন্য প্রয়োজন, এবং আমি আশা করি এটি কার্যকর হবে তবে কেন জানি না তা আমি জানি না। আপনি একটি "*** কীআরার: 0" পেয়েছেন। আমি অনুমান করছি যে এটি একটি "স্কেলার" এর মতো হওয়ার সাথে সম্পর্কযুক্ত যখন কেবল একটি মান রয়েছে।
স্টারম্যান

আজকের হিসাবে, এটি ডিএফ-তে একটি কোয়েরি সহ সমস্ত চরিত্র ফেরত দেয় যা 127 টি অক্ষরের সাথে দুটি কোষ প্রদান করে, যা করার চেষ্টা করে আমি হতাশ হয়ে পড়েছি। যদি এটি যে কাউকে সহায়তা করে
এভিরর

12

পুরো স্ট্রিংটি মুদ্রণের আরেকটি সহজ উপায় valuesহ'ল ডেটা ফ্রেমে কল করা।

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

print(df.values)

আউটপুট হবে

[['one']
 ['two']
 ['This is very long string very long string very long string veryvery long string']]

4

এই আপনি কি বোঝাতে চেয়েছিলেন?

In [7]: x =  pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']})

In [8]: x
Out[8]: 
                                                 one
0                                                one
1                                                two
2  This is very long string very long string very...

In [9]: x['one'][2]
Out[9]: 'This is very long string very long string very long string veryvery long string'

4

মুদ্রণের আগে আপনার কোডে কেবল নিম্নলিখিত লাইনটি যুক্ত করুন।

 pd.options.display.max_colwidth = 90  # set a value as your need

অন্যান্য অতিরিক্ত বিকল্পগুলি সেট করার জন্য আপনি কেবল নিম্নলিখিত পদক্ষেপগুলি করতে পারেন,

  • আরও কলামগুলি প্রদর্শনের জন্য আপনি পান্ডাস ম্যাক্স_কলামগুলি বৈশিষ্ট্যটির বিকল্পগুলি পরিবর্তন করতে পারেন

    import pandas as pd
    pd.options.display.max_columns = 10

    (এটি 10 ​​টি কলাম প্রদর্শন করতে দেয়, আপনি এটি যেমন প্রয়োজন তেমন পরিবর্তন করতে পারেন)

  • এর মতো আপনি আরও সারি প্রদর্শনের জন্য নিম্নরূপে প্রদর্শিত হওয়াতে সারিগুলির সংখ্যা পরিবর্তন করতে পারেন

    pd.options.display.max_rows = 999

    (এটি একসাথে 999 টি সারি মুদ্রণ করতে দেয়)

এটি ভাল কাজ করা উচিত

পান্ডার জন্য আরও বিকল্প / সেটিংস পরিবর্তন করতে দয়া করে দস্তাবেজটি দয়া করে উল্লেখ করুন


3

আপনি যে পরিস্থিতিটি বর্ণনা করেছেন তার সাথে আমি প্রায়শই যেভাবে আচরণ করি তা হ'ল .to_csv()পদ্ধতিটি ব্যবহার এবং স্টাডআউটকে লেখার জন্য:

import sys

df.to_csv(sys.stdout)

আপডেট: এখন অনুরূপ প্রভাবের Noneপরিবর্তে কেবল ব্যবহার করা সম্ভব হবে sys.stdout!

এটি কোনও স্ট্রিংয়ের সম্পূর্ণতা সহ পুরো ডেটাফ্রেমকে ডাম্প করা উচিত। আপনি কলাম বিভাজকগুলি কনফিগার করতে to_csv প্যারামিটার ব্যবহার করতে পারেন, সূচিটি মুদ্রিত কিনা ইত্যাদি etc. এটি যথাযথভাবে রেন্ডারিংয়ের চেয়ে কম সুন্দর হবে।

আমি এটিকে মূলত প্যান্ডাসের ডেটাফ্রেমে সমস্ত কলামের আউটপুট ডেটাতে কিছুটা সম্পর্কিত প্রশ্নের উত্তরে পোস্ট করেছি


2

আমি একটি ছোট ইউটিলিটি ফাংশন তৈরি করেছি, এটি আমার পক্ষে ভাল কাজ করে

def display_text_max_col_width(df, width):
    with pd.option_context('display.max_colwidth', width):
        print(df)

display_text_max_col_width(train_df["Description"], 800)

স্থায়ীভাবে কোনও বিকল্প সেট না করে আমি আমার প্রয়োজন অনুযায়ী প্রস্থের দৈর্ঘ্য পরিবর্তন করতে পারি can


1

আপনি যদি জপিটার নোটবুক ব্যবহার করেন তবে আপনি HTML টেবিল হিসাবে পান্ডাস ডেটা ফ্রেমও মুদ্রণ করতে পারেন যা পুরো স্ট্রিংগুলি মুদ্রণ করবে।

from IPython.display import display, HTML
display(HTML(df.to_html()))

আউটপুট

    one
0   one
1   two
2   This is very long string very long string very long string veryvery long string
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.