问题
I am struggling with the seemingly very simple thing.I have a pandas data frame containing very long string.
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
Now when I try to print the same, I do not see the full string I rather see only part of the string.
I tried following options
- using
print(df.iloc[2])
- using
to_html
- using
to_string
- One of the stackoverflow answer suggested to increase column width by using pandas display option, that did not work either.
- I also did not get how
set_printoptions
will help me.
Any ideas appreciated. Looks very simple, but not able to get it!
回答1:
You can use options.display.max_colwidth
to specify you want to see more in the default representation:
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
And indeed, if you just want to inspect the one value, by accessing it (as a scalar, not as a row as df.iloc[2]
does) you also see the full string:
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:
Use pd.set_option('display.max_colwidth', -1)
for automatic linebreaks and multi-line cells.
This is a great resource on how to use jupyters display with pandas to the fullest.
回答3:
Another, pretty simple approach is to call list function:
list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
No worth to mention, that is not good to convent to list the whole columns, but for a simple line - why not
回答4:
Another easier way to print the whole string is to call values
on the dataframe.
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
print(df.values)
The Output will be
[['one']
['two']
['This is very long string very long string very long string veryvery long string']]
回答5:
Is this what you meant to do ?
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'
回答6:
The way I often deal with the situation you describe is to use the .to_csv()
method and write to stdout:
import sys
df.to_csv(sys.stdout)
Update: it should now be possible to just use None
instead of sys.stdout
with similar effect!
This should dump the whole dataframe, including the entirety of any strings. You can use the to_csv parameters to configure column separators, whether the index is printed, etc. It will be less pretty than rendering it properly though.
I posted this originally in answer to the somewhat-related question at Output data from all columns in a dataframe in pandas
回答7:
Just add the following line to your code before print.
pd.options.display.max_colwidth = 90 # set a value as your need
You can simply do the following steps for setting other additional options,
You can change the options for pandas max_columns feature as follows to display more columns
import pandas as pd pd.options.display.max_columns = 10
(this allows 10 columns to display, you can change this as you need)
Like that you can change the number of rows as you need to display as follows to display more rows
pd.options.display.max_rows = 999
(this allows to print 999 rows at a time)
this should works fine
Please kindly refer the doc to change more options/settings for pandas
来源:https://stackoverflow.com/questions/29902714/print-very-long-string-completely-in-pandas-dataframe