webentwicklung-frage-antwort-db.com.de

Ist es möglich, Reihen an DataFrame-Zeilen anzuhängen, ohne zuerst eine Liste zu erstellen?

Ich habe einige Daten, die ich versuchen, in DataFramein Pandaszu organisieren. Ich habe versucht, jede Zeile als Serieszu definieren und an den DataFramenamen__ anzuhängen. Ich habe eine Möglichkeit gefunden, dies zu tun, indem ich den Seriesan einen leeren listangehängt und dann den listvon Seriesin einen DataFramekonvertiert habe.

z.B. DF = DataFrame([series1,series2],columns=series1.index)

Dieser Schritt von listzu DataFramescheint zu lang zu sein. Ich habe hier einige Beispiele ausprobiert, aber keiner der Serieshat die Indexname__-Bezeichnungen aus den Seriesname__-Bezeichnungen beibehalten, um sie als Spaltenbezeichnungen zu verwenden.

Mein langer Weg, wo Spalten ID_Namen und Zeilen Typ_Namen sind:  enter image description here

Ist es möglich, Datenreihen an DataFrame-Zeilen anzuhängen, ohne zuerst eine Liste zu erstellen?

#!/usr/bin/python

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value)
    DF.append(SR_row)
DF.head()

TypeError: Can only append a Series if ignore_index=True or if the Series has a name

Dann habe ich es versucht

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value,name=sample)
    DF.append(SR_row)
DF.head()

Leerer DataFrame

Versucht Fügen Sie eine Zeile in pandas dataframe ein Immer noch ein leerer dataframe: /

Ich versuche, die Reihe als Zeilen zu definieren, wobei der Index der Reihe zu den Spaltenbeschriftungen des Datenrahmens wird.

18
O.rka

Eine einfachere Möglichkeit wäre es, den pandas.Series in das pandas.DataFrame mit dem ignore_index=True-Argument zu DataFrame.append() einzufügen. Beispiel -

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value)
    DF = DF.append(SR_row,ignore_index=True)

Demo -

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])

In [3]: df
Out[3]:
   A  B
0  1  2
1  3  4

In [5]: s = pd.Series([5,6],index=['A','B'])

In [6]: s
Out[6]:
A    5
B    6
dtype: int64

In [36]: df.append(s,ignore_index=True)
Out[36]:
   A  B
0  1  2
1  3  4
2  5  6

Ein weiteres Problem in Ihrem Code ist, dass DataFrame.append() nicht vorhanden ist. Das angehängte Datenframe wird zurückgegeben. Sie müssten es dann wieder dem ursprünglichen Datenframe zuordnen, damit es funktioniert. Beispiel -

DF = DF.append(SR_row,ignore_index=True)

Um die Beschriftungen beizubehalten, können Sie Ihre Lösung verwenden, um den Namen für die Serie anzugeben und den angehängten DataFrame wieder DF zuzuweisen. Beispiel -

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value,name=sample)
    DF = DF.append(SR_row)
DF.head()
35
Anand S Kumar

DataFrame.append ändert den vorhandenen DataFrame nicht. Sie müssen df = df.append(...) ausführen, wenn Sie sie wieder der ursprünglichen Variablen zuweisen möchten.

10
BrenBarn

So etwas könnte funktionieren ...

mydf.loc['newindex'] = myseries

Hier ist ein Beispiel, wo ich es benutzt habe ...

stats = df[['bp_prob', 'ICD9_prob', 'meds_prob', 'regex_prob']].describe()

stats
Out[32]: 
          bp_prob   ICD9_prob   meds_prob  regex_prob
count  171.000000  171.000000  171.000000  171.000000
mean     0.179946    0.059071    0.067020    0.126812
std      0.271546    0.142681    0.152560    0.207014
min      0.000000    0.000000    0.000000    0.000000
25%      0.000000    0.000000    0.000000    0.000000
50%      0.000000    0.000000    0.000000    0.013116
75%      0.309019    0.065248    0.066667    0.192954
max      1.000000    1.000000    1.000000    1.000000

medians = df[['bp_prob', 'ICD9_prob', 'meds_prob', 'regex_prob']].median()

stats.loc['median'] = medians

stats
Out[36]: 
           bp_prob   ICD9_prob   meds_prob  regex_prob
count   171.000000  171.000000  171.000000  171.000000
mean      0.179946    0.059071    0.067020    0.126812
std       0.271546    0.142681    0.152560    0.207014
min       0.000000    0.000000    0.000000    0.000000
25%       0.000000    0.000000    0.000000    0.000000
50%       0.000000    0.000000    0.000000    0.013116
75%       0.309019    0.065248    0.066667    0.192954
max       1.000000    1.000000    1.000000    1.000000
median    0.000000    0.000000    0.000000    0.013116
3
Selah

Versuchen Sie es mit diesem Befehl. Siehe das unten angegebene Beispiel:

 Before image

df.loc[len(df)] = ['Product 9',99,9.99,8.88,1.11]

df

 After Image