6

私はいくつかのタクシー データセットに取り組んでいます。pandas を使用して、すべてのデータセットを単一のデータフレームに連結しました。

私のデータフレームは次のようになります。

                     675                       1039                #and rest 125 taxis
                     longitude     latitude    longitude    latitude
date
2008-02-02 13:31:21  116.56359  40.06489       Nan          Nan
2008-02-02 13:31:51  116.56486  40.06415       Nan          Nan
2008-02-02 13:32:21  116.56855  40.06352       116.58243    39.6313
2008-02-02 13:32:51  116.57127  40.06324       Nan          Nan
2008-02-02 13:33:21  116.57120  40.06328       116.55134    39.6313
2008-02-02 13:33:51  116.57121  40.06329       116.55126    39.6123
2008-02-02 13:34:21  Nan        Nan            116.55134    39.5123

ここで、675,1039 はタクシー ID です。基本的に、緯度と経度を並べた合計 127 のタクシーがあります。

行の null 以外の値を抽出する方法はいくつかあります。

df.ix[k,df.columns[np.isnan(df.irow(0))!=1]]
              (or)
df.irow(0)[np.isnan(df.irow(0))!=1]
              (or)
df.irow(0)[np.where(df.irow(0)[df.columns].notnull())[0]]

上記のコマンドのいずれかが返されます。

675   longitude    116.56359
      latitude     40.064890 
4549  longitude    116.34642
      latitude      39.96662
Name: 2008-02-02 13:31:21

ここで、最初の数行 (行 1 から行 6 まで) からすべての notnull 値を抽出したいと考えています。

それ、どうやったら出来るの?

私はおそらくそれをループすることができます。しかし、ループしない方法が必要です。

どんな助け、提案も大歓迎です。よろしくお願いします!:)

4

3 に答える 3

5
df.ix[1:6].dropna(axis=1)

注意として、irowパンダの次のリリースで廃止される予定です。より明確な使用法を備えた新しいメソッドがそれに取って代わります。

http://pandas.pydata.org/pandas-docs/dev/indexing.html#deprecations

于 2013-04-15T14:00:40.550 に答える
2

0.11 (現在 0.11rc1 がリリースされています) では.iloc、最初の 6 行を最初に選択し、次に dropna を使用して任意の行を削除するのは非常に簡単nanです (ドロップナにいくつかのオプションを渡して、検討する列を正確に制御することもできます)。

私はあなたが1:6を望んでいることに気づきました.私は私の答えで0:6をしました....

In [8]: df = DataFrame(randn(10,3),columns=list('ABC'),index=date_range('20130101',periods=10))

In [9]: df.ix[6,'A'] = np.nan

In [10]: df.ix[6,'B'] = np.nan

In [11]: df.ix[2,'A'] = np.nan

In [12]: df.ix[4,'B'] = np.nan

In [13]: df.iloc[0:6]
Out[13]: 
                   A         B         C
2013-01-01  0.442692 -0.109415 -0.038182
2013-01-02  1.217950  0.006681 -0.067752
2013-01-03       NaN -0.336814 -1.771431
2013-01-04 -0.655948  0.484234  1.313306
2013-01-05  0.096433       NaN  1.658917
2013-01-06  1.274731  1.909123 -0.289111

In [14]: df.iloc[0:6].dropna()
Out[14]: 
                   A         B         C
2013-01-01  0.442692 -0.109415 -0.038182
2013-01-02  1.217950  0.006681 -0.067752
2013-01-04 -0.655948  0.484234  1.313306
2013-01-06  1.274731  1.909123 -0.289111
于 2013-04-15T14:03:11.020 に答える