2017-11-28 4 views
3

Ich habe das folgende Skript zu erhalten, die einen leeren Datenrahmen mit Pandas produziert:Python: Wie verwenden oder auf den Spaltenkopf in Pandas und verwenden Sie es als Eingabe/Wert

import pandas as pd 
import datetime 

#Creating a list of row headers with dates. 
start=datetime.date(2017,3,27) 
end=datetime.date.today() - datetime.timedelta(days=1) 
row_dates=[x.strftime('%m/%d/%Y') for x in pd.bdate_range(start,end).tolist()] 
identifiers=['A','B','C'] 
#Creating an empty Dataframe 
df=pd.DataFrame(index=identifiers, columns=row_dates) 

print(df) 

Nun nehme ich habe eine Funktion (nennen wir es "my_function (index, date)", das zwei Eingaben benötigt: einen Index und ein Datum.

Diese Funktion gibt mir ein Ergebnis und ich möchte den entsprechenden leeren Steckplatz des Datenrahmens mit diesem Ergebnis füllen. Aber dazu muss ich sowohl den Index als auch das Datum erwerben können.

Zum Beispiel lassen Sie uns sagen, dass ich den ersten Schlitz meiner Datenrahmen füllen wollen, die ich benötige Index ‚A‘ und das erste Datum, die '27/3/2017' ist, so habe ich dies:

my_function ('A', '27/3/2017 ')

Wie kann ich das für meinen gesamten Dataframe erreichen? Ich entschuldige mich, wenn das alles verwirrend klingt.

+0

Können Sie die .loc Indexierung verwenden? 'def my_function (index, datum): df.loc [index, datum] = some_value' – Evan

+0

Die Funktion ist bereits definiert, alles, was mich interessiert, ist, wie ich die entsprechenden Index- und Datumswerte aus den Namen der entsprechenden verwenden Zeile und Kopfzeile. –

+1

Fragen Sie, wie man über jede Zelle im Datenrahmen iteriert und eine Funktion auf jede Zelle anwendet? – Evan

Antwort

0

bis zum Ende des Codes hinzugefügt:

for col in df.columns: 
    for row in df.iterrows(): 
     print(row[0], col) 

der Drucke (Returns) ein Tupel, bestehend aus dem Index (Datum) und den Spaltennamen. Es kann einen schnelleren Weg geben, es zu tun.

Wenn Sie nur eine Funktion auf jede Zelle in Ihrem df anwenden möchten, können Sie .apply, .map oder .applymap verwenden, falls erforderlich. https://chrisalbon.com/python/pandas_apply_operations_to_dataframes.html

Verwandte Themen