Je veux imprimer tout le cadre de données, mais je ne veux pas imprimer l'index
En outre, une colonne est de type date-heure, je veux juste imprimer l'heure, pas la date.
Le dataframe ressemble à:
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
Je le veux imprimer comme
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))
Ou éventuellement:
print(df.to_csv(columns=['A', 'B', 'C'], sep='\t', index=False))
Si vous voulez juste une chaîne/json à imprimer, vous pouvez la résoudre avec:
print(df.to_string(index=False))
Buf, si vous voulez aussi sérialiser les données ou même les envoyer à une MongoDB, mieux vaut faire quelque chose comme:
document = df.to_dict(orient='list')
Il y a maintenant 6 façons d'orienter les données, vérifiez plus dans le panda docs qui vous convient le mieux.
Si vous voulez assez imprimer les trames de données, vous pouvez utiliser le paquet 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)
Plus précisément, le showindex=False
, comme son nom l’indique, vous permet de ne pas afficher d’index. La sortie ressemblerait à ceci:
+--------+--------+--------+
| 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 |
+--------+--------+--------+
Pour répondre à la question "Comment imprimer un cadre de données sans index", vous pouvez définir l'index comme un tableau de chaînes vides (une pour chaque ligne du cadre de données), comme suit:
blankIndex=[''] * len(df)
df.index=blankIndex
Si nous utilisons les données de votre message:
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)
qui devrait normalement être imprimé comme:
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
En créant un tableau avec autant de chaînes vides qu'il y a de lignes dans le cadre de données:
blankIndex=[''] * len(df)
df.index=blankIndex
print(df)
Cela supprimera l'index de la sortie:
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
Et dans Jupyter Notebooks, le rendu serait conforme à cette capture d'écran: base de données Juptyer Notebooks sans colonne d'index
La ligne ci-dessous masquerait la colonne d'index de DataFrame lors de l'impression
df.style.hide_index()