2017-05-15 1 views
0

データフレームにPythonで混合タイプの値のリストを追加し、データフレームの各行は、次のようになります。基本的にIはpandas.read_csvを使用して、CSVからの読み出しデータフレームを有する

[1, '10/18/2016 06:00', 1, 14, 0, 5.5] 

、それから成り整数、文字列、および浮動小数点数です。今、私は、既存のデータに基づいてより多くのデータ(newrow)を生成し、元のデータフレームに追加したいと考えています。私は次のコードでの関数appendを呼び出そうとすると:

df.append(list(newrow)) 

私はエラーを得た:

RuntimeWarning: unorderable types: str() < int(), sort order is undefined for incomparable objects. 
result = result.union(other) 

私は、文字列型はここにいたずらを再生していると思いますが、私はへの道を把握していませんこれを達成する。

さらに、最初にdfdf.valuesに変換してから、numpy.vstack(df.values, numpy.array(newrow))を使用しました。ただし、このコードの結果はすべてのフィールドが文字列になる

['1', '10/18/2016 06:00', '1', '14', '0', '5.5'] 

になります。どんな助けもありがとうございます。

+0

あなたはdfとnewrowの短い例を挙げることができますか? – Allen

答えて

1

これは機能しますか?

#build a DataFrame first using the list and column names from original DF. 
df.append(pd.DataFrame(columns=df.columns,data=[newrow])) 
+0

あなたの迅速な対応に感謝します。だから、これは私のコードで 'df.append(list())'とどう違うのですか?なぜそこにエラーがありますが、ここにはありませんか? – Lin

+0

df.appendは、DataFrame、Series/dict-likeオブジェクトのみを使用します。このため、リストを直接追加するのは失敗します。このソリューションは、元のdfのリストと列の名前を使用してDataFrameを構築します。それがその理由です。 – Allen

0

これは、空のデータフレームに追加されているようです。 の列はと一致する必要があります。

column_titles = ['col1','col2'] 
data = ['1', '10/18/2016 06:00', '1', '14', '0', '5.5'] 

# creates empty df w/headers 
df = pd.DataFrame(columns = column_titles) 

df2 = pd.DataFrame([data]) 

df = df.append(df2) 
関連する問題