2

次の入力 trans.csv ファイルがあります。

Date,Currenncy,Symbol,Type,Units,UnitPrice,Cost,Tax
2012-03-14,USD,AAPL,BUY,1000
2012-05-12,USD,SBUX,SELL,500

フィールド UnitPrice、Cost、および Tax はオプションです。それらが指定されていない場合、DataFrame セルに NaN が必要です。

私はcsvファイルを次のように読みました:

t = pandas.read_csv('trans.csv', parse_dates=True, index_col=0)

そして次の結果を得ました:

           Currenncy Symbol  Type  Units   UnitPrice       Cost       Tax
Date                                                                     
2012-03-14       USD   AAPL   BUY   1000  2012-05-12  012-05-12  12-05-12
2012-02-05       USD   SBUX  SELL    500         NaN        NaN       NaN

最初の行に NaN がなく、Date が繰り返されるのはなぜですか? 指定されていないフィールドの NaN を取得するための回避策はありますか?

4

2 に答える 2

3

CSV ファイルの形式が正しくありません。私は Pandas 0.10 であなたと同じ答えを得ました。それは確かに非常に奇妙であることは認めますが、不正な形式のデータを与えるべきではありません。

Date,Currenncy,Symbol,Type,Units,UnitPrice,Cost,Tax
2012-03-14,USD,AAPL,BUY,1000,,,
2012-05-12,USD,SBUX,SELL,500,,,

期待値を返します

>>> import pandas as pd
>>> t = pd.read_csv('pandas_test', parse_dates=True, index_col=0)
>>> t
           Currenncy Symbol  Type  Units  UnitPrice  Cost  Tax
Date                                                          
2012-03-14       USD   AAPL   BUY   1000        NaN   NaN  NaN
2012-05-12       USD   SBUX  SELL    500        NaN   NaN  NaN
于 2013-01-09T14:54:11.847 に答える
2

これは、さらにいくつかのケース ( にデータがある場合など) を処理できるメソッドUnitCostですCost

In [1]: df = pd.read_csv('trans.csv', header=None)

In [2]: df.columns = df.ix[0]

In [3]: df[1:].set_index('Date')
Out[3]: 
           Currenncy Symbol  Type Units UnitPrice Cost  Tax
Date                                                       
2012-03-14       USD   AAPL   BUY  1000       NaN  NaN  NaN
2012-05-12       USD   SBUX  SELL   500       NaN  NaN  NaN
2012-05-12       USD   SBUX  SELL   500       NaN  NaN  NaN

これらの列の dtype が になることに注意してくださいobject

しかし、これはキャッチすべきだと思うのでgithub に issueto_csvとして投稿しました。

于 2013-01-09T15:15:59.760 に答える