hima2b4
@hima2b4 (hima2b4)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

データフレームに格納したテキストを左寄せで表示させたい。

Q&A

Closed

解決したいこと

表形式のテキストデータを読込み、Ginzaで分かち書きを行ったあと、行毎のわかり書きの結果をデータフレーム列にリスト(※['A','B','C','D'])で格納しています。
リストに格納した特定のキーワードに合致するテキスト原文のみを抽出し、printでセルに表示させるとテキスト表示が右寄せ表示となります。左寄せ表示としたいのですが、どうすればよいかわからないのです。

発生している問題

実行コードは以下です。df[column_name]に格納したテキストの原文から、ストップワードを除く、指定の品詞を取り上げ、行毎に分かち書きした単語をdf['separate_words']に格納するというものです。

nlp = spacy.load('ja_ginza')

# 出現する単語をリストに追加
words = []     #全単語
words_list=[]  #行毎の単語リスト
#for doc in nlp.pipe(df[column_name]):
print('Tokenizing and part-of-speech tagging in progress.... please wait a minute.')
for doc in tqdm(nlp.pipe(df[column_name]), total=len(df)):
    words.extend([token.lemma_ for token in doc
                  if token.pos_ in include_pos and
                  token.lemma_ not in stop_words])
    sep_word=[token.lemma_ for token in doc if token.pos_ in include_pos and token.lemma_ not in stop_words]
    words_list.append(sep_word)
    time.sleep(0.1)

#行毎の意見→単語に分解し、カラムに格納
df['separate_words']= [s for s in words_list]

その後、以下で分かち書きしたキーワードを指定し、そのキーワードがdf['separate_words']にある場合、df[column_name]にあるテキスト原文を表示するということをしています。
pd.set_optionはできる限り、フル表示させるために設定したものです。

Keyword = 'keyword_A' #@param {type:"raw"}
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_colwidth', 400)
print(df[column_name][df['separate_words'].apply(lambda x: Keyword in x)])

これを実行すると以下のように表示されます。
image.png

自分で試したこと

  • ljust 等、試みましたが、うまくいきませんでした。
  • 以下を実行すれば、できるのはできたのですが、左に寄せるだけならもっと簡便にしたいです。
try:
  dfa=pd.DataFrame(df[column_name][df['separate_words'].apply(lambda x: Keyword_A
 in x)])
  for i in dfa[column_name]:
    print('\t✓',i)     
except:
    print(Keyword_A,'unknown keyword')

お願い

うまくできる方法があれば、ぜひともご教示をお願いします。

0

2Answer

@mamo3grさん、ご教示ありがとうございます。
早速実行し、左寄せを確認しました。ありがとうございました。
style.set_properties をネットサーチすると、EXCELライクなことがいろいろできる感じですね。(EXCELが寄せてきているのかもしれませんが)

質問を気に留めていただいたこと、感謝いたします。

0Like

Your answer might help someone💌