2016-10-11 2 views
3

Wenn diese Frage unklar ist, bin ich sehr offen für konstruktive Kritik.Python: Speichern Sie einen Wert in einer Variablen, so dass Sie jede Wiederholung erkennen können

Ich habe eine Excel-Tabelle mit etwa 50 Datenzeilen, wobei die erste Spalte in jeder Zeile ein Datum ist. Ich muss auf alle Daten für nur ein Datum zugreifen, und dieses Datum erscheint nur etwa 1-5 mal. Es ist das neueste Datum, also habe ich die Tabelle bereits nach Datum geordnet, wobei die letzte oben ist.

Also ist es mein Ziel, dieses Datum in einer Variablen zu speichern und dann Python nur nach dieser Variablen (diesem Datum) suchen zu lassen und nur die Spalten zu nehmen, die dieser Variablen entsprechen. Ich muss diesen Code auch bei anderen Excel-Dateien verwenden, so dass das letzte Datum willkürlich gewählt werden muss (immer an der Spitze).

Mein aktueller Code unten nimmt einfach die ersten 5 Zeilen, weil ich weiß, wie oft dieses Datum auftritt.

import os 
from numpy import genfromtxt 
import pandas as pd 

path = 'Z:\\folderwithcsvfile' 

for filename in os.listdir(path): 
    file_path = os.path.join(path, filename) 
    if os.path.isfile(file_path): 
     broken_df = pd.read_csv(file_path) 
     df3 = broken_df['DATE'] 
     df4 = broken_df['TRADE ID'] 
     df5 = broken_df['AVAILABLE STOCK'] 
     df6 = broken_df['AMOUNT'] 
     df7 = broken_df['SALE PRICE'] 
     print (df3) 
     #print (df3.head(6)) 
     print (df4.head(6)) 
     print (df5.head(6)) 
     print (df6.head(6)) 
     print (df7.head(6)) 

Antwort

1

Dies ist ein relativ einfacher Filtervorgang. Sie geben an, dass Sie nur die Spalten nehmen möchten, die das späteste Datum sind, also nehme ich an, dass ein akzeptables Ergebnis ein Filter DataFrame mit nur den richtigen Spalten ist.

Hier ist eine einfache CSV, die auf Ihre Struktur ähnelt:

DATE,TRADE ID,AVAILABLE STOCK 
10/11/2016,123,123 
10/11/2016,123,123 
10/10/2016,123,123 
10/9/2016,123,123 
10/11/2016,123,123 

Bitte beachte, dass ich die Tage ein wenig gemischt, weil sie davon ausgehen, nur Hacky und fehleranfällig ist, dass die neuesten Daten ein sein die Spitze. Das folgende Skript wird es filtern entsprechend:

import pandas as pd 
import numpy as np 

df = pd.read_csv('data.csv') 

# convert the DATE column to datetimes 
df['DATE'] = pd.to_datetime(df['DATE']) 

# find the latest datetime 
latest_date = df['DATE'].max() 

# use index filtering to only choose the columns that equal the latest date 
latest_rows = df[df['DATE'] == latest_date] 
print (latest_rows) 

# now you can perform your operations on latest_rows 

In meinem Beispiel, wird dies drucken:

 DATE TRADE ID AVAILABLE STOCK 
0 2016-10-11  123    123 
1 2016-10-11  123    123 
4 2016-10-11  123    123 
+0

, die perfekt dank einer Tonne Mann arbeitete ich für Tage durch diese stapfte wurde. – Stephen

Verwandte Themen