从pandas df中每隔n列删除一个选项卡

时间:2018-06-01 11:35:32

标签: python python-3.x pandas dataframe

我正在尝试访问我用两个列表创建的数据框的列并进行一些过滤。但是,我的数据框中的每第12个元素似乎都有一个额外的空间。我该如何处理?

import pandas as pd

df = pd.DataFrame(
    {'S': s,
     'K': k})

我使用上面的代码创建了数据框。此外,由于一些奇怪的原因,它以类型为​​float的科学记数法存储。在我真正找出问题所在之前,我使用了df.round(4)。

KeyError                                  Traceback (most recent call last)
<ipython-input-14-2e289598b460> in <module>()
----> 1 df[df['S']]

~\Anaconda\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   1956         if isinstance(key, (Series, np.ndarray, Index, list)):
   1957             # either boolean or fancy integer index
-> 1958             return self._getitem_array(key)
   1959         elif isinstance(key, DataFrame):
   1960             return self._getitem_frame(key)

~\Anaconda\lib\site-packages\pandas\core\frame.py in _getitem_array(self, key)
   2000             return self.take(indexer, axis=0, convert=False)
   2001         else:
-> 2002             indexer = self.loc._convert_to_indexer(key, axis=1)
   2003             return self.take(indexer, axis=1, convert=True)
   2004 

~\Anaconda\lib\site-packages\pandas\core\indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
   1229                 mask = check == -1
   1230                 if mask.any():
-> 1231                     raise KeyError('%s not in index' % objarr[mask])
   1232 
   1233                 return _values_from_object(indexer)

KeyError: '[-0.65 -0.6  -0.6  -0.6  -0.55 -0.55 -0.55 -0.55 -0.55 -0.55 -0.5  -0.5\n -0.5  -0.5  -0.5  -0.5  -0.5  -0.5  -0.45 -0.45 -0.45 -0.45 -0.45 -0.45\n -0.45 -0.45 -0.45 -0.45 -0.4  -0.4  -0.4  -0.4  -0.4  -0.4  -0.4  -0.4\n -0.4  -0.4  -0.4  -0.4  -0.35 -0.35 -0.35 -0.35 -0.35 -0.35 -0.35 -0.35\n -0.35 -0.35 -0.35 -0.35 -0.35 -0.35 -0.3  -0.3  -0.3  -0.3  -0.3  -0.3\n -0.3  -0.3  -0.3  -0.3  -0.3  -0.3  -0.3  -0.3  -0.3  -0.3  -0.25 -0.25\n -0.25 -0.25 -0.25 -0.25 -0.25 -0.25 -0.25 -0.25 -0.25 -0.25 -0.25 -0.25\n -0.25 -0.25 -0.25 -0.25 -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2\n -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.2  -0.15\n -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15\n -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.1  -0.1  -0.1  -0.1  -0.1\n -0.1  -0.1  -0.1  -0.1  -0.1  -0.1  -0.1  -0.1  -0.1  -0.1  -0.1  -0.1\n -0.1  -0.1  -0.1  -0.1  -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05\n -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05 -0.05\n -0.05 -0.05  0.    0.    0.    0.    0.    0.    0.    0.    0.    0.    0.\n  0.    0.    0.    0.    0.    0.    0.    0.    0.    0.    0.    0.\n  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05\n  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05  0.05\n  0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1\n  0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1   0.1\n  0.1   0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15\n  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15  0.15\n  0.15  0.15  0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2\n  0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2   0.2\n  0.2   0.2   0.2   0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25\n  0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25  0.25\n  0.25  0.25  0.25  0.25  0.25  0.3   0.3   0.3   0.3   0.3   0.3   0.3\n  0.3   0.3   0.3   0.3   0.3   0.3   0.3   0.3   0.3   0.3   0.3   0.3\n  0.3   0.3   0.3   0.3   0.3   0.3   0.35  0.35  0.35  0.35  0.35  0.35\n  0.35  0.35  0.35  0.35  0.35  0.35  0.35  0.35  0.35  0.35  0.35  0.35\n  0.35  0.35  0.35  0.35  0.35  0.35  0.35  0.4   0.4   0.4   0.4   0.4\n  0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.4\n  0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.4   0.45  0.45  0.45  0.45\n  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45\n  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.45  0.5   0.5   0.5\n  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5\n  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.55  0.55  0.55\n  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.55\n  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.55  0.6   0.6   0.6   0.6\n  0.6   0.6   0.6   0.6   0.6   0.6   0.6   0.6   0.6   0.6   0.6   0.6\n  0.6   0.6   0.6   0.6   0.6   0.6   0.65  0.65  0.65  0.65  0.65  0.65\n  0.65  0.65  0.65  0.65  0.65  0.65  0.65  0.65  0.65  0.65  0.65  0.65\n  0.65  0.65  0.65  0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.7\n  0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.7   0.75\n  0.75  0.75  0.75  0.75  0.75  0.75  0.75  0.75  0.75  0.75  0.75  0.75\n  0.75  0.75  0.75  0.75  0.75  0.8   0.8   0.8   0.8   0.8   0.8   0.8\n  0.8   0.8   0.8   0.8   0.8   0.8   0.8   0.8   0.8   0.8   0.85  0.85\n  0.85  0.85  0.85  0.85  0.85  0.85  0.85  0.85  0.85  0.85  0.85  0.85\n  0.85  0.9   0.9   0.9   0.9   0.9   0.9   0.9   0.9   0.9   0.9   0.9\n  0.9   0.9   0.95  0.95  0.95  0.95  0.95  0.95  0.95  0.95  0.95  0.95\n  0.95  1.    1.    1.    1.    1.    1.    1.    1.    1.    1.05  1.05\n  1.05  1.05  1.05  1.05  1.1   1.1   1.1   1.1   1.15  1.3   1.3   1.3\n  1.3   1.3   1.35  1.35  1.35  1.35  1.35  1.35  1.35  1.35  1.35  1.35\n  1.4   1.4   1.4   1.4   1.4   1.4   1.4   1.4   1.4   1.4   1.4   1.4\n  1.45  1.45  1.45  1.45  1.45  1.45  1.45  1.45  1.45  1.45  1.45  1.45\n  1.45  1.45  1.45  1.45  1.45] not in index'

1 个答案:

答案 0 :(得分:0)

您可以尝试删除\n中的每个S,如下所示:

df["S"] = df["S"].apply(lambda x: float(str(x).replace("\n", "")))

顺便说一句:df[df["S"]]会在索引中查找S的值。通过构建数据框,索引中可能没有S的任何值。