我试图访问在整个DataFrame
Pandas中应用的函数中的行的索引。我有这样的事情:
df = pandas.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
>>> df
a b c
0 1 2 3
1 4 5 6
我将定义一个函数来访问给定行的元素
def rowFunc(row):
return row['a'] + row['b'] * row['c']
我可以这样应用它:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
太棒了!现在,如果要将索引合并到函数中怎么办?DataFrame
在添加之前,该行中任何给定行的索引都d
将是Index([u'a', u'b', u'c', u'd'], dtype='object')
,但是我想要0和1。所以我不能只访问row.index
。
我知道我可以在存储索引的表中创建一个临时列,但是我想知道它是否存储在行对象中的某个地方。
在这种情况下,要访问索引,请访问name
属性:
In [182]:
df = pd.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
def rowFunc(row):
return row['a'] + row['b'] * row['c']
def rowIndex(row):
return row.name
df['d'] = df.apply(rowFunc, axis=1)
df['rowIndex'] = df.apply(rowIndex, axis=1)
df
Out[182]:
a b c d rowIndex
0 1 2 3 7 0
1 4 5 6 34 1
请注意,如果这确实是您要尝试执行的操作,则可以使用以下命令并且速度更快:
In [198]:
df['d'] = df['a'] + df['b'] * df['c']
df
Out[198]:
a b c d
0 1 2 3 7
1 4 5 6 34
In [199]:
%timeit df['a'] + df['b'] * df['c']
%timeit df.apply(rowIndex, axis=1)
10000 loops, best of 3: 163 µs per loop
1000 loops, best of 3: 286 µs per loop
编辑
3年后再看这个问题,您可以做:
In[15]:
df['d'],df['rowIndex'] = df['a'] + df['b'] * df['c'], df.index
df
Out[15]:
a b c d rowIndex
0 1 2 3 7 0
1 4 5 6 34 1
但是假设它并不那么简单,无论您rowFunc
实际上在做什么,您都应该使用向量化函数,然后对df索引使用它们:
In[16]:
df['newCol'] = df['a'] + df['b'] + df['c'] + df.index
df
Out[16]:
a b c d rowIndex newCol
0 1 2 3 7 0 6
1 4 5 6 34 1 16
我有一个熊猫数据框,如下所示,具有多个列,并希望获得列的总数。 我的尝试: 我试图使用和获取列的总和: 这会导致以下错误: 预期产出 我预计产出如下: 或者,我希望编辑< code>df,在标题为< code>TOTAL的新行中包含总计:
获取相应列内容满足条件的索引范围的最有效方法是什么。。类似于以标记开始并以“body”标记结束的行。 例如,数据框如下所示 我要得到行索引1-3 有人能提出最具蟒蛇风格的方法来实现这一点吗?
问题内容: 不知道这里出了什么问题…我想要的只是本系列中的第一个也是唯一的元素 为什么这样不起作用?以及如何获得第一个元素? 问题答案: 当索引为整数时,您将无法使用位置索引器,因为选择将是模棱两可的(应基于标签还是位置返回?)。您需要明确使用 或传递标签。 由于索引类型是对象,因此可以进行以下操作: 但是对于整数索引,情况有所不同:
给定一个列为“BoolCol”的数据帧,我们想要查找数据帧的索引,其中“BoolCol”的值 == True 我目前有一种迭代的方法来完成它,它非常有效: 但这不是熊猫的正确方法。经过一些研究,我目前正在使用以下代码: 这个给了我一个索引列表,但是它们不匹配,当我通过执行以下操作来检查它们时: 结果其实是假的!! 熊猫的正确做法是什么?
我肯定这是以前问过的,如果重复,对不起。假设我有以下数据框: 在“key”上执行groupby,我知道我们可以执行以下操作: 获取数组中所有'拆分'数据的最简单方法是什么?: 我不一定只按一个键进行分组,而是使用其他几个索引(例如“年”和“月”),这就是为什么我想使用groupby函数,但保留数组中所有分组的值。