Как ограничить количество строк (символов / слов) в столбце с помощью DataFrame - PullRequest
0 голосов
/ 20 января 2019

Попытка ограничить количество символов, отображаемых в выходных данных DataFrame.

Вот пример DataFrame:

     Abc                       XYZ
0  Hello   How are you doing today
1   Good   This is a job well done
2    Bye          See you tomorrow
3  Books  Read chapter 1 to 5 only

Желаемый вывод:

     Abc                       XYZ
0  Hello                   How are 
1   Good                   This is
2    Bye                   See you
3  Books              Read chapter

Вот что я попробовал:

pd.set_option('display.max_info_rows', 2)
pd.set_option('display.max_info_columns', 2)
pd.set_option('display.max_colwidth', 2)

max_info_rows и max_info_columns ничего не сделали, в то время как max_colwidth фактически расширили символы.

В любом случае, чтобы ограничить количество символов в кадре данных?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Попробуйте:

df.XYZ.apply(lambda x : x.rsplit(maxsplit=len(x.split())-2)[0])

0         How are
1         This is
2         See you
3    Read chapter

просто переназначьте его обратно:

df.XYZ = df.XYZ.apply(lambda x : x.rsplit(maxsplit=len(x.split())-2)[0])
print(df)

     Abc           XYZ
0  Hello       How are
1   Good       This is
2    Bye       See you
3  Books  Read chapter
0 голосов
/ 20 января 2019

Получить панды для отображения только двух слов из каждой строки будет сложно. Строки в Python на самом деле не имеют понятия отдельных слов. Что вы можете сделать, это разбить каждую строку на список строк (по одной строке на слово), а затем ограничить число элементов списка, которые печатает Pandas, используя параметр 'display.max_seq_items':

import pandas as pd

d = '''     Abc                       XYZ
0  Hello   "How are you doing today"
1   Good   "This is a job well done"
2    Bye          "See you tomorrow"
3  Books  "Read chapter 1 to 5 only"'''

df = pd.read_csv(pd.compat.StringIO(d), sep='\s+')

# convert the XYZ values from str to list of str
df['XYZ'] = df['XYZ'].str.split()

# only display the first 2 values in each list of word strings
with pd.option_context('display.max_seq_items', 2):
    print(df)

Выход:

     Abc                   XYZ
0  Hello       [How, are, ...]
1   Good       [This, is, ...]
2    Bye       [See, you, ...]
3  Books  [Read, chapter, ...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...