2016-10-20 20 views
1

CSVからデータフレームを読み取らずにデータフレームを作成したいと考えています。パンダのデータフレーム - 1つのレコードでデータフレームを作成する

たとえば、列とレコードを1つ作成します。フィーチャー間「」 classifier.predict(データフレーム)

私が持つ文字列としてレコードを受け取った:私は分類器を構築し、私は予測したいと思い

Feature1 Feature 2 Feature 3 ... Feature n 
1  20  False  3.2   True 

: このようなものを想定してください。 。

series = pd.Series(features) 

その後、私はデータフレームを作成したいと思います: COLUMN_NAMESの= [ '特長1、私はシリーズの中にリストを変換した後

record_features = "16,713,Danny, ..." 
features = record_features.split(',') 

: 私は機能のリストを抽出するための分割を使用しました」、 '特長2'、...、 'feature102']私は誤りだ

df = pd.DataFrame(series, columns=column_names) 

ValueError: Shape of passed values is (1, 102), indices imply (102, 102) 

私は本当に102の機能を持っていると私は列 と一つのレコード

任意の提案でデータフレームを作成したいと思いますか?

答えて

3

あなたは[]を追加することができます。

column_names = ['Feature1','Feature2','Feature102'] 
record_features = "16,713,Danny" 
features = record_features.split(',') 

df = pd.DataFrame([features], columns=column_names) 
print (df) 
    Feature1 Feature2 Feature102 
0  16  713  Danny 

reshapeと別のnumpyの解決策:

df = pd.DataFrame(np.array(features) 
        .reshape(len(features) // len(column_names), len(column_names)), 
       columns=column_names) 
print (df) 
    Feature1 Feature2 Feature102 
0  16  713  Danny 

タイミング

column_names = ['Feature' + str(x) for x in range(102)] 
record_features = "16,713,Danny" 
features = record_features.split(',') 
features = features * 34 

In [222]: %timeit pd.DataFrame([features], columns=column_names) 
100 loops, best of 3: 5.94 ms per loop 

In [223]: %timeit pd.DataFrame(dict(zip(column_names, features)), index=[0], columns=column_names) 
The slowest run took 4.48 times longer than the fastest. This could mean that an intermediate result is being cached. 
100 loops, best of 3: 5.25 ms per loop 

In [224]: %timeit pd.DataFrame(np.array(features).reshape(len(features) // len(column_names), len(column_names)), columns=column_names) 
The slowest run took 5.60 times longer than the fastest. This could mean that an intermediate result is being cached. 
1000 loops, best of 3: 206 µs per loop 
0

をあなたはに辞書に渡すことができます210コンストラクタ:

column_names = ['Feature1','Feature2','Feature102'] 
record_features = "16",713,"Danny" 

print pd.DataFrame(dict(zip(column_names, record_features)), index=[0], columns=column_names) 

>>> Feature1 Feature2 Feature102 
0  16  713  Danny 
+0

ありがとうございました – kezzos

関連する問題