Панды в Python, показывающие полное содержимое фрейма данных - PullRequest
1 голос
/ 20 мая 2019

Я хотел бы отобразить вывод запроса в Neo4j с использованием фрейма данных pandas и записать результат в текстовый файл.

Я могу отобразить запрос, но вывод всегда содержит точки.

from py2neo import Graph
import pandas as pd
graph = Graph(host="63.35.194.218", auth=("neo4j", "neo4j"))
bidirectional_different_SAB = graph.run('MATCH (n1)-[r1:HAS_CHILD|HAS_DESCENDANT]->(n2)-[r2:HAS_CHILD|HAS_DESCENDANT]->(n1) WHERE r1.weight = r2.weight and id(n1) > id(n2) and r1.SAB<>r2.SAB RETURN  n1.prefered_name,r1.SAB, n2.prefered_name,r2.SAB, n1.id, n2.id;')
bidirectional_different_SAB = str(bidirectional_different_SAB.to_data_frame())
f= open("analysiss.txt","w+")
f.write("Display bidirectional relationships having different SAB")
f.write(bidirectional_different_SAB)
f.write("\n")

Я бы хотел, чтобы все данные отображались в текстовом файле без точек This is the result shown, I need the result without dots

Ответы [ 2 ]

2 голосов
/ 20 мая 2019

вы можете использовать параметры отображения, чтобы определить, как ваш df должен быть напечатан: https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html

см. Этот пост для некоторых примеров: Как расширить выводной дисплей, чтобы увидеть больше столбцов?

2 голосов
/ 20 мая 2019

Попробуйте использовать API фрейма данных pandas для прямой записи файла.

df = bidirectional_different_SAB.to_data_frame()
df.to_csv("Display bidirectional relationships having different SAB.csv")

Если вы хотите формат repr, вы можете изменить параметры pandas, используя set_option, прежде чем запускать остальныеcode.

import pandas as pd

pd.set_option('display.width', 30000)
pd.set_option('display.max_columns', 1000)
pd.set_option('display.max_colwidth', 1000)

В качестве третьего варианта вы можете преобразовать фрейм данных в строку, заполнить его фиксированной шириной для каждого столбца, а затем сохранить фрейм даты в файл с помощью API pandas.

import pandas as pd

def get_colwidth(col):
    w_header = len(col.name) if col.name else 0
    w_col = col.astype(str).str.len().max()
    return max(w_header, w_col)

def to_fixed_width(df):
    df_out = df.astype(str)
    for c in df_out:
        col = df_out[c]
        width = get_width(col)
        df_out[c] = col
    # convert the index to str as well
    ix = df_out.index
    df_out = df_out.set_index(ix.str.rjust(get_width(ix)))
    return df_out

df = bidirectional_different_SAB.to_data_frame()
df2 = to_fixedwidth(df)
# this uses the CSV writer to write the fixed width text file with a space as the separator
df2.to_csv("Display bidirectional relationships having different SAB.txt", sep=' ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...