小编Pau*_*l H的帖子

在具有多级索引的 Pandas Dataframe 上执行 groupby 和滚动窗口会导致重复的索引条目

如果我执行 groupby() 后跟具有多级索引的滚动 () 计算,则重复索引中的一个级别 - 最奇怪。我正在使用 Pandas 0.18.1

import pandas as pd
df = pd.DataFrame(data=[[1, 1, 10, 20], [1, 2, 30, 40], [1, 3, 50, 60],
                        [2, 1, 11, 21], [2, 2, 31, 41], [2, 3, 51, 61]],
                  columns=['id', 'date', 'd1', 'd2'])

df.set_index(['id', 'date'], inplace=True)
df = df.groupby(level='id').rolling(window=2)['d1'].sum()
print(df)
print(df.index)
Run Code Online (Sandbox Code Playgroud)

输出如下

id  id  date
1   1   1        NaN
        2       40.0
        3       80.0
2   2   1        NaN
        2       42.0
        3       82.0
Name: d1, dtype: float64
MultiIndex(levels=[[1, 2], [1, 2], [1, …
Run Code Online (Sandbox Code Playgroud)

python-2.7 pandas

6
推荐指数
1
解决办法
1505
查看次数

Pandas Dataframe的apply()方法提供了一个行对象,但是如何访问索引值

我是Panda和DataFrames的新手,遇到了一个问题.DataFrame.apply()方法将行参数传递给提供的函数.但是,我似乎无法找出与该行对应的索引值来自此行参数.

一个例子

df = DataFrame ({'a' : np.random.randn(6),
         'b' : ['foo', 'bar'] * 3,
         'c' : np.random.randn(6)})

df = df.set_index('a')

def my_test2(row):
   return "{}.{}".format(row['a'], row['b'])

df['Value'] = df.apply(my_test2, axis=1)
Run Code Online (Sandbox Code Playgroud)

产生KeyError

KeyError: ('a', u'occurred at index -1.16119852166')
Run Code Online (Sandbox Code Playgroud)

问题是my_test2方法中的行['a']失败.如果我不做df.set_index('a')它可以正常工作,但我确实想要一个索引.

我尝试复制列a(一次作为索引,一次作为一列),这是有效的,但这看起来很丑陋和有问题.

关于如何在给定行对象的情况下获取相应索引值的任何想法?

提前谢谢了.

python apply pandas

4
推荐指数
1
解决办法
9101
查看次数

标签 统计

pandas ×2

apply ×1

python ×1

python-2.7 ×1