2

次のコードを使用します。

import pandas as pd

date_spec = {'transdate': [[0, 1, 2]]}
df2 = pd.read_csv('fruit.csv', header=None, parse_dates=date_spec)

print df2

次のような csv ファイルを読み取ろうとしています。

2011,1,10,Apple,Red,1500,
2011,1,13,Apple,Green,1500,
2011,1,13,Orange,Red,4000,
2011,1,26,Banana,Red,1000,
2011,2,2,Pear,Green,4000,
2011,2,10,Pear,Red,4000,
2011,3,3,Banana,Green,1000,
2011,3,3,Orange,Green,2200,
2011,6,3,Orange,Green,3300,

次のような Numpy 配列に変換します。

2011-01-10,Apple,Red,1500
2011-01-13,Apple,Blue,1500
2011-01-13,Orange,Red,4000
2011-01-26,Banana,Red,1000
2011-02-02,Pear,Blue,4000
2011-02-10,Pear,Red,4000
2011-03-03,Banana,Blue,1000
2011-03-03,Orange,Blue,2200
2011-06-03,Orange,Blue,3300

しかし、私の印刷出力は次のようになります。

     X.1  X.2  X.3   X.4   X.5   X.6  X.7
0   2011    1   10  Apple  Red  1500  NaN
1   2011    1   13  Apple  Blue 1500  NaN
2   2011    1   13  Orange Red  4000  NaN
3   2011    1   26  Banana Red  1000  NaN
4   2011    2    2  Pear   Blue 4000  NaN
5   2011    2   10  Pear   Red  4000  NaN
6   2011    3    3  Banana Blue 1000  NaN
7   2011    3    3  Orange Blue 2200  NaN
8   2011    6    3  Orange Blue 3300  NaN

いくつかのバリエーションを試しましたが、3 列の日付を「YYYY-MM-DD」形式の 1 列の日付に変換できません。これに関するヘルプは大歓迎です。

4

2 に答える 2

1

csv を読み取った後、独自のdate列を作成します。

In [59]: df['date'] = df.apply(lambda x:datetime.date(x[0],x[1], x[2]), axis=1)

In [60]: df
Out[60]: 
      0  1   2       3      4     5   6        date
0  2011  1  10   Apple    Red  1500 NaN  2011-01-10
1  2011  1  13   Apple  Green  1500 NaN  2011-01-13
2  2011  1  13  Orange    Red  4000 NaN  2011-01-13
3  2011  1  26  Banana    Red  1000 NaN  2011-01-26
4  2011  2   2    Pear  Green  4000 NaN  2011-02-02
5  2011  2  10    Pear    Red  4000 NaN  2011-02-10
6  2011  3   3  Banana  Green  1000 NaN  2011-03-03
7  2011  3   3  Orange  Green  2200 NaN  2011-03-03
8  2011  6   3  Orange  Green  3300 NaN  2011-06-03

次に、不要な列を削除します。

In [61]: del df[0], df[1], df[2]

In [62]: df
Out[62]: 
        3      4     5   6        date
0   Apple    Red  1500 NaN  2011-01-10
1   Apple  Green  1500 NaN  2011-01-13
2  Orange    Red  4000 NaN  2011-01-13
3  Banana    Red  1000 NaN  2011-01-26
4    Pear  Green  4000 NaN  2011-02-02
5    Pear    Red  4000 NaN  2011-02-10
6  Banana  Green  1000 NaN  2011-03-03
7  Orange  Green  2200 NaN  2011-03-03
8  Orange  Green  3300 NaN  2011-06-03
于 2013-04-03T03:52:06.760 に答える