DataFrame
のPandas
に整理しようとしているデータがあります。各行をSeries
にして、DataFrame
に追加しようとしていました。 Series
を空のlist
に追加し、list
のSeries
をDataFrame
に変換する方法を見つけました。
例えばDF = DataFrame([series1,series2],columns=series1.index)
このlist
からDataFrame
へのステップは過剰なようです。ここでいくつかの例をチェックアウトしましたが、Series
のどれもIndex
のSeries
ラベルを保持せず、それらを列ラベルとして使用します。
列がid_namesで行がtype_namesである私の長い道のり:
最初にリストを作成せずにDataFrameの行にシリーズを追加することは可能ですか?
#!/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
それから私は試した
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()
空のデータフレーム
試した pandasデータフレームに行を挿入 まだ空のデータフレームを取得しています:/
シリーズを行にしようとしていますが、シリーズのインデックスはDataFrameの列ラベルになります
たぶん簡単な方法は、pandas.Series
をpandas.DataFrame
に追加し、ignore_index=True
引数をDataFrame.append()
に追加することです。例-
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)
デモ -
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
コードのもう1つの問題は、 DataFrame.append()
がインプレースではなく、追加されたデータフレームを返すため、元のデータフレームに戻す必要があります。例-
DF = DF.append(SR_row,ignore_index=True)
ラベルを保持するには、ソリューションを使用して、追加されたDataFrameをDF
に戻すとともに、シリーズの名前を含めることができます。例-
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()
DataFrame.append
は、所定の位置にあるDataFrameを変更しません。元の変数に再割り当てする場合は、df = df.append(...)
を実行する必要があります。
このような何かが動作する可能性があります...
mydf.loc['newindex'] = myseries
これは私がそれを使用した例です...
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