Ответ 1
print df.to_string(index=False)
Я хочу распечатать весь файл данных, но я не хочу печатать индекс
Кроме того, один столбец является типом даты и времени, я просто хочу напечатать время, а не дату.
Информационная рамка выглядит так:
User ID Enter Time Activity Number
0 123 2014-07-08 00:09:00 1411
1 123 2014-07-08 00:18:00 893
2 123 2014-07-08 00:49:00 1041
Я хочу, чтобы он печатался как
User ID Enter Time Activity Number
123 00:09:00 1411
123 00:18:00 893
123 00:49:00 1041
print df.to_string(index=False)
print(df.to_csv(sep='\t', index=False))
Или, возможно:
print(df.to_csv(columns=['A', 'B', 'C'], sep='\t', index=False))
Если вы просто хотите, чтобы строка /json была напечатана, ее можно решить с помощью
print(df.to_string(index=False))
Buf, если вы хотите сериализовать данные или даже отправить в MongoDB, было бы лучше сделать что-то вроде:
document = df.to_dict(orient='list')
На данный момент существует 6 способов ориентирования данных, проверьте больше в panda docs, который лучше подходит вам.
Если вы хотите распечатать фреймы данных, то вы можете использовать пакет tabulate.
import pandas as pd
import numpy as np
from tabulate import tabulate
def pprint_df(dframe):
print tabulate(dframe, headers='keys', tablefmt='psql', showindex=False)
df = pd.DataFrame({'col1': np.random.randint(0, 100, 10),
'col2': np.random.randint(50, 100, 10),
'col3': np.random.randint(10, 10000, 10)})
pprint_df(df)
В частности, showindex=False
, как следует из названия, позволяет не показывать индекс. Вывод будет выглядеть следующим образом:
+--------+--------+--------+
| col1 | col2 | col3 |
|--------+--------+--------|
| 15 | 76 | 5175 |
| 30 | 97 | 3331 |
| 34 | 56 | 3513 |
| 50 | 65 | 203 |
| 84 | 75 | 7559 |
| 41 | 82 | 939 |
| 78 | 59 | 4971 |
| 98 | 99 | 167 |
| 81 | 99 | 6527 |
| 17 | 94 | 4267 |
+--------+--------+--------+
Чтобы ответить на вопрос "Как напечатать фрейм данных без индекса", вы можете установить индекс как массив пустых строк (по одной на каждую строку в фрейме данных), например:
blankIndex=[''] * len(df)
df.index=blankIndex
Если мы используем данные из вашего поста:
row1 = (123, '2014-07-08 00:09:00', 1411)
row2 = (123, '2014-07-08 00:49:00', 1041)
row3 = (123, '2014-07-08 00:09:00', 1411)
data = [row1, row2, row3]
#set up dataframe
df = pd.DataFrame(data, columns=('User ID', 'Enter Time', 'Activity Number'))
print(df)
который обычно распечатывается как:
User ID Enter Time Activity Number
0 123 2014-07-08 00:09:00 1411
1 123 2014-07-08 00:49:00 1041
2 123 2014-07-08 00:09:00 1411
Создавая массив с таким количеством пустых строк, сколько строк в кадре данных:
blankIndex=[''] * len(df)
df.index=blankIndex
print(df)
Это удалит индекс из вывода:
User ID Enter Time Activity Number
123 2014-07-08 00:09:00 1411
123 2014-07-08 00:49:00 1041
123 2014-07-08 00:09:00 1411
И в Jupyter Notebooks будет отображаться в соответствии с этим снимком экрана: кадр данных Juptyer Notebooks без столбца индекса
Строка ниже будет скрывать столбец индекса DataFrame при печати
df.style.hide_index()
Подобно многим ответам выше, в которых используется df.to_string (index = False), я часто считаю необходимым извлечь один столбец значений, и в этом случае вы можете указать отдельный столбец с помощью .to_string, используя следующее:
data = pd.DataFrame({'col1': np.random.randint(0, 100, 10),
'col2': np.random.randint(50, 100, 10),
'col3': np.random.randint(10, 10000, 10)})
print(data.to_string(columns=['col1'], index=False)
print(data.to_string(columns=['col1', 'col2'], index=False))
Который обеспечивает простой для копирования (и без индекса) вывод для использования в других местах (Excel). Пример вывода:
col1 col2
49 62
97 97
87 94
85 61
18 55