Печать данных с Panda на консоль без имен столбцов - PullRequest
0 голосов
/ 10 апреля 2020

Привет, у меня есть такой фрейм данных:

    0   1   2   3   4   5   6   7   8   class
0   0.4444  0.0000  0.0000  0.0000  0.1111  0.0000  0.2222  0.0000  0.0000  0
1   0.4444  0.3333  0.3333  0.4444  0.6667  1.0000  0.2222  0.1111  0.0000  0
2   0.2222  0.0000  0.0000  0.0000  0.1111  0.1111  0.2222  0.0000  0.0000  0

Все, что я хочу, чтобы это печаталось на консоли без перевода строки и без имен столбцов:

0.4444,0.0000,0.0000,0.0000,0.1111,0.0000,0.2222,0.0000,0.0000,0
0.4444,0.3333,0.3333,0.4444,0.6667,1.0000,0.2222,0.1111,0.0000,0
0.2222,0.0000,0.0000,0.0000,0.1111,0.1111,0.2222,0.0000,0.0000,0
..

Всего 360 строк .

Я новичок в Pandas и не могу понять, как этого добиться. Я попытался преобразовать массив pandas в numpy, вывести список и попытался распечатать с помощью print(data,end=''), но ни один из них не помог мне.

Решено: Если кто-то сталкивался с подобной проблемой, решается с помощью df_to_csv и sys.stdout : df.to_csv(sys.stdout,header=False,index=False,float_format='%.4f')

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Вы можете print значения в l oop с f-string с для 3 цифр после десятичного числа с join:

for x in df.values:
    print (','.join(f'{y:.4f}' for y in x))

0.4444,0.0000,0.0000,0.0000,0.1111,0.0000,0.2222,0.0000,0.0000,0.0000
0.4444,0.3333,0.3333,0.4444,0.6667,1.0000,0.2222,0.1111,0.0000,0.0000
0.2222,0.0000,0.0000,0.0000,0.1111,0.1111,0.2222,0.0000,0.0000,0.0000

Если не хотите новой строки, получите одну строку данных:

for x in df.values:
    print (','.join(f'{y:.4f}' for y in x), end='')

0.4444,0.0000,0.0000,0.0000,0.1111,0.0000,0.2222,0.0000,0.0000,0.00000.4444,0.3333,0.3333,0.4444,0.6667,1.0000,0.2222,0.1111,0.0000,0.00000.2222,0.0000,0.0000,0.0000,0.1111,0.1111,0.2222,0.0000,0.0000,0.0000
1 голос
/ 10 апреля 2020

Я попытался сделать это, и я нашел этот код:

def print_df(df):
   # This code delete index and columns names
   df_ = df.copy()
   df_.columns = ['', '', '', '']
   df_.index = ['' for _ in range(len(df))]
   print(df_)

print_df(df)

Другой найденный способ, но без правильных пробелов между значениями для формата столбца:

[print(*row, sep=', ') for row in df.values.tolist()];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...