にわたるループは、私は次のコードを持っているエラー:パンダ:所与パンダ行
df_boundry = df_in.dropna().quantile([0.0, .8])
for row in df_in.iterrows():
for column in row:
if row[column] > df_boundry[column][0.8]:
row[column] = df_boundry[column][0.8]
は基本的に、各所与の行(レコード)のために、我々は、各列の値をチェックします。値が80パーセンタイルを超える場合は、80パーセンタイル値に置き換えます。しかし、私は上記のコードでエラーを得た:ここ
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-67-81b2be77cc8a> in <module>()
4 for row in df_in.iterrows():
5 for column in row:
----> 6 if row[column] > df_boundry[column][0.8]:
7 row[column] = df_boundry[column][0.8]
8
/home/edamame/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
1995 return self._getitem_multilevel(key)
1996 else:
-> 1997 return self._getitem_column(key)
1998
1999 def _getitem_column(self, key):
/home/edamame/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_column(self, key)
2002 # get column
2003 if self.columns.is_unique:
-> 2004 return self._get_item_cache(key)
2005
2006 # duplicate columns & possible reduce dimensionality
/home/edamame/anaconda2/lib/python2.7/site-packages/pandas/core/generic.pyc in _get_item_cache(self, item)
1348 res = cache.get(item)
1349 if res is None:
-> 1350 values = self._data.get(item)
1351 res = self._box_item_values(item, values)
1352 cache[item] = res
/home/edamame/anaconda2/lib/python2.7/site-packages/pandas/core/internals.pyc in get(self, item, fastpath)
3288
3289 if not isnull(item):
-> 3290 loc = self.items.get_loc(item)
3291 else:
3292 indexer = np.arange(len(self.items))[isnull(self.items)]
/home/edamame/anaconda2/lib/python2.7/site-packages/pandas/indexes/base.pyc in get_loc(self, key, method, tolerance)
1945 return self._engine.get_loc(key)
1946 except KeyError:
-> 1947 return self._engine.get_loc(self._maybe_cast_indexer(key))
1948
1949 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4154)()
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4018)()
pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12368)()
pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12322)()
KeyError: 0
はdf_inのためのいくつかのサンプルデータです:
column_A | column_B | column_C
--------------------------------
0.5 | 0.5 | NaN
1.2 | NaN | NaN
NaN | 8.1 | 21.1
9.1 | 9.3 | 2.1
4.5 | 90.1 | 1.4
112.3 | 79.2 | 1.1
:
:
とdf_boundry:
| column_A | column_B | column_C
----------------------------------------
0.0 | 0.1 | 0.4 | 0.0
0.8 | 110.4 | 80.1 | 20.5
サンプルデータの期待結果がでなければなりません
column_A | column_B | column_C
--------------------------------
0.5 | 0.5 | NaN
1.2 | NaN | NaN
NaN | 8.1 | 20.5
9.1 | 9.3 | 2.1
4.5 | 80.1 | 1.4
110.4 | 79.2 | 1.1
:
:
つまり、セル値> df_boundry [column] [0.8]の場合に限って、df_boundry [column] [0.8]に置き換えます。
私がここで逃したものは誰か知っていますか?ありがとう!
サンプルデータセット(5〜7行)を投稿できますか? – MaxU
df_in.iterrows()はエラーを理解しているので、(index、row)のタプルを返します。これを修正するには 'for idx、row in df_in.iterrows():'を実行しますが、それを行った後でも行はシリーズなので、 'for column in row'は実際に行の各値を返します。ループ内のいくつかの変数を印刷して、それをさらに調べてみてください。 – shawnheide