Python - Pandas - печать строковых атрибутов двух столбцов - PullRequest
0 голосов
/ 09 ноября 2018

Это работает, если я хочу напечатать подстроку одного столбца:

print(myDf["thisCol"].str[:2])

Но, если я хочу вставить в столбец другой столбец и включить его в вывод, я не уверен, как это сделать.

Придуманный результат выше примерно:

0 fo
1 ba

То, что я хочу, для второго столбца с именем «anotherCol», где максимальная длина больше 2, это вывод:

0 fo    tr
1 ba    ca

(Отказ от ответственности: я не смог найти ответ с помощью нескольких поисков. И я изучаю панд в некотором роде ...)

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018
df=pd.DataFrame({'col1':['foo','bar'],'col2':['foo','bar'],'col3':['foo','bar']})

Выберите необходимые столбцы и затем примените функцию chooper , которая обрежет строку до первых двух символов

def chopper(x):
    return x[:2]

print(df[['col1','col3']].applymap(chopper))

Выход:

  col1 col3
0   fo   fo
1   ba   ba

Другой вариант:

Если ваш порог для подстроки 5 или более, вы можете использовать параметры отображения панд

pd.set_option('max_colwidth',6)

pd.set_option('max_colwidth',6)
df=pd.DataFrame({0:['asdfzklnlkdsfnalsdfknals;dknfs','asdfs0'],1:['foo','bar'],2:['foo','bar']})
print(df)

выход:

      0    1    2
0  as...  foo  foo
1  as...  bar  bar
0 голосов
/ 09 ноября 2018

Похоже, вы просто хотите применить что-то:

>>> df=pd.DataFrame([['aaa','bbb'],['ccc','ddd'],['eee','fff']])
>>> df.apply(lambda x: x.str[:2]) #or applymap(lambda x: x[:2])
    0   1
0  aa  bb
1  cc  dd
2  ee  ff

Если вы не подаете заявку на всю таблицу, вам придется

df[specific_col]=df[specific_col].str[:2]

для каждого такого столбца.

0 голосов
/ 09 ноября 2018

Вы можете указать коэффициент, который представляет желаемое количество пробелов, для умножения его на один пробел в операторе print

import pandas as pd

# mock data following your example, replace by your own data
col1 = ['foo', 'bar']
col2 = ['tri', 'car']
my_df = pd.DataFrame({'this_col': col1, 'another_col': col2})

# Specify your desired number of spaces between the dataframe columns print
desired_num_spaces = 10

# Print dataframes with specified columns separated by the desired number of spaces
print(my_df['this_col'].str[:2] + desired_num_spaces * ' ' + my_df['another_col'].str[:2])

дает

0    fo          tr
1    ba          ca
dtype: object

Кстати: В Python использование snake_case для имен переменных и ключей является предпочтительным.Пожалуйста, не используйте стиль именования camelCase, используемый в других языках, таких как C #, Java, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...