python - 如何在多索引 Pandas Dataframe 中按组更新前 N 行的值?

标签 python pandas dataframe multi-index

我正在尝试更新多索引数据框中的前 N ​​行,但在找到解决方案时遇到了一些麻烦,所以我想为它创建一个帖子。

示例代码如下:

# Imports
import numpy as np
import pandas as pd

# Set Up Data Frame
dates = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])
df['DATE'] = dates
df['CATEGORY'] = ['A','B','A','B','A','B','A','B']

# Set Index
df.set_index(['CATEGORY','DATE'],inplace=True)
df.sort(inplace=True)

# Get First Two Rows of Each Category
df.groupby(level=0).apply(lambda x: x.iloc[0:2])

# Set The Value of Column 'C' Equal to Zero
# ???

所以我能够使用“iloc”选择行,但之后我不确定如何将“C”列设置为零。感觉也许我会以错误的方式解决这个问题。任何帮助将不胜感激。谢谢!

最佳答案

这个怎么样 - 首先定义一个接受数据框的函数,并用指定值替换前 x 条记录。

def replace_first_x(group_df, x, value):
    group_df.iloc[:x, :] = value
    return group_df

然后,使用 apply 将其传递给 groupby 对象。

In [97]: df.groupby(level=0).apply(lambda df: replace_first_x(df, 2, 9999))
Out[97]: 
                               A            B            C            D
CATEGORY DATE                                                          
A        2000-01-01  9999.000000  9999.000000  9999.000000  9999.000000
         2000-01-03  9999.000000  9999.000000  9999.000000  9999.000000
         2000-01-05     1.590503     0.948911    -0.268071     0.622280
         2000-01-07    -0.493866     1.222231     0.125037     0.071064
B        2000-01-02  9999.000000  9999.000000  9999.000000  9999.000000
         2000-01-04  9999.000000  9999.000000  9999.000000  9999.000000
         2000-01-06     1.663430    -1.170716     2.044815    -2.081035
         2000-01-08     1.593104     0.108531    -1.381218    -0.517312

关于python - 如何在多索引 Pandas Dataframe 中按组更新前 N 行的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24804832/

相关文章:

python - 有没有办法使 scipy curve_fit 具有确定性?

python - 使用 Dask DataFrame 和 Pandas 高效读取 Timeseries CSV 数据目录

python - 使用预定义的 header 将列表字典转换为 pandas.DataFrame

python - Pandas:基于公共(public)列连接两个数据框的最佳方式

python - 无法在 anaconda python 2.7 中导入 tensorflow

python - 如何以独立于操作系统的方式规范化/折叠 Python 中的路径或 URL?

python - Web 应用程序的高效 trie 存储

python-2.7 - 根据索引合并行

python - 组织多个数据框的最佳方式

python - 根据列名中的子字符串堆叠数据