Вывод полной строки без многоточия с помощью Pandas и Flask

#python #pandas #flask #tweepy

#python #панды #flask #tweepy #pandas

Вопрос:

Я пытаюсь распечатать полную строку для каждого столбца в pandas с помощью Flask. Более конкретно, столбец tweet_text сокращен,

Это следует из руководства:https://www.analyticsvidhya.com/blog/2020/04/how-to-deploy-machine-learning-model-flask /

В настоящее время я получаю следующий вывод.

  created_at             tweet_id                                         tweet_text  prediction
0  2020-09-02 13:39:10  1301152689217126403  smh my head at disney every time I think about...           0
1  2020-09-02 13:39:09  1301152689137487872       Tapos parehong may black diko bet kulay nila           1
2  2020-09-02 13:39:09  1301152688898363392  RT @SmokingSkills_: Indian army yesterday only...           0
3  2020-09-02 13:39:09  1301152688286183428  RT @AmonAmarthBand: The longship burst into fl...           0
4  2020-09-02 13:39:09  1301152688202231811  RT @VANTEMETAL: no hate to on but she ain’t bl...           1
  

Если я использую pd.set_option('display.max_colwidth', 1000) , результаты будут еще хуже.

             created_at  ...  prediction
0  2020-09-02 13:50:52  ...           1
1  2020-09-02 13:50:52  ...           0
2  2020-09-02 13:50:52  ...           0
3  2020-09-02 13:50:52  ...           0
4  2020-09-02 13:50:52  ...           0
  

app.py

 # Flask connection
from flask import Flask, render_template, request, redirect, url_for
from joblib import load
from get_tweets import get_related_tweets

pipeline = load('text_classification.joblib')

def requestResults(name):
    tweets = get_related_tweets(name)
    tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
    data = str(tweets.prediction.value_counts())   'nn'
    return data   str(tweets)

app = Flask(__name__)

# Render default webpage
@app.route('/')
def home():
    return render_template('home.html')

# When post method detected, redirect to success function
@app.route('/', methods=['POST', 'GET'])
def get_data():
    if request.method == 'POST':
        user = request.form['search']
        return redirect(url_for('success', name=user))

# Get data for requested query
@app.route('/success/<name>')
def success(name):
    return '<xmp>'   str(requestResults(name))   ' </xmp> '

# Start the Flask server
app.run(debug=True)
  

get_tweets.py

 # Setup tweepy to access Twitter API
import tweepy
import time
import pandas as pd
#pd.set_option('display.max_colwidth', 1000)

authentication = tweepy.OAuthHandler(api_key, api_secret_key)
authentication.set_access_token(access_token, access_token_secret)
api = tweepy.API(authentication, wait_on_rate_limit=True)

def get_related_tweets(text_query):
    tweets_list = []
    count = 50
    try:
        for tweet in api.search(q=text_query, count=count):
            print(tweet.text)
            tweets_list.append({'created_at': tweet.created_at,
                                'tweet_id': tweet.id,
                                'tweet_text': tweet.text})
        return pd.DataFrame.from_dict(tweets_list)

    except BaseException as e:
        print('failed on_status,', str(e))
        time.sleep(3)
  

Ответ №1:

Я обнаружил, что преобразование фрейма данных pandas в строку через str (df) ограничивает ширину каждого столбца. Преобразование с помощью df.to_string() работает без этого ограничения, следовательно, без использования многоточия.

 def requestResults(name):
    tweets = get_related_tweets(name)
    tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
    data = str(tweets.prediction.value_counts())   'nn'
    return data   tweets.to_string()