我知道这是一个简单的问题,但我对熊猫来说是个新手。 我想比较单元格的每一行,看看列中的任何单元格是多少还是小于0.00。
GOOG AAPL XOM IBM Value
2011-01-10 0.0 0.0 0.0 0.0 0.00
2011-01-13 0.0 -1500.0 0.0 4000.0 -61900.00
我知道大熊猫已经内置了它们。但是,使用以下代码我收到错误
for index, row in dataFrame.iterrows():
for i in range(0, len(of_columns)):
print dataFrame[index][i]
错误
返回self._engine.get_loc(self._maybe_cast_indexer(key)) 文件" pandas \ index.pyx",第132行,在pandas.index.IndexEngine.get_loc(pandas \ index.c:4433) 文件" pandas \ index.pyx",第154行,在pandas.index.IndexEngine.get_loc(pandas \ index.c:4279) 文件" pandas \ src \ hashtable_class_helper.pxi",第732行,在pandas.hashtable.PyObjectHashTable.get_item(pandas \ hashtable.c:13742) 文件" pandas \ src \ hashtable_class_helper.pxi",第740行,在pandas.hashtable.PyObjectHashTable.get_item(pandas \ hashtable.c:13696)
预期行动 如果单元格包含0,则不执行任何操作(继续)。如果单元格包含非零值,则每行计算非零值
答案 0 :(得分:3)
按gt
(>
),lt
(<
)或le
进行比较,
ge
,
ne
,
首先是eq
,然后是sum
True
,有类似1
的处理:
不好 - &gt;检查以前的所有列:
df['> zero'] = df.gt(0).sum(axis=1)
df['< zero'] = df.lt(0).sum(axis=1)
df['== zero'] = df.eq(0).sum(axis=1)
print (df)
GOOG AAPL XOM IBM Value > zero < zero == zero
2011-01-10 0.0 0.0 0.0 0.0 0.0 0 0 7
2011-01-13 0.0 -1500.0 0.0 4000.0 -61900.0 1 2 2
正确 - 选择要检查的列:
cols = df.columns
df['> zero'] = df[cols].gt(0).sum(axis=1)
df['< zero'] = df[cols].lt(0).sum(axis=1)
df['== zero'] = df[cols].eq(0).sum(axis=1)
print (df)
GOOG AAPL XOM IBM Value > zero < zero == zero
2011-01-10 0.0 0.0 0.0 0.0 0.0 0 0 5
2011-01-13 0.0 -1500.0 0.0 4000.0 -61900.0 1 2 2
详情:
print (df.gt(0))
GOOG AAPL XOM IBM Value
2011-01-10 False False False False False
2011-01-13 False False False True False
编辑:
要删除&#39; cols&#39;中的某些列。使用difference
:
cols = df.columns.difference(['Value'])
print (cols)
Index(['AAPL', 'GOOG', 'IBM', 'XOM'], dtype='object')
df['> zero'] = df[cols].gt(0).sum(axis=1)
df['< zero'] = df[cols].lt(0).sum(axis=1)
df['== zero'] = df[cols].eq(0).sum(axis=1)
print (df)
GOOG AAPL XOM IBM Value > zero < zero == zero
2011-01-10 0.0 0.0 0.0 0.0 0.0 0 0 4
2011-01-13 0.0 -1500.0 0.0 4000.0 -61900.0 1 1 2