python - 根据 groupby 值向 pandas 数据框添加一个新列

标签 python pandas

我有一个数据框:

  date                value
1/1/2017               -3
1/1/2017               -1 
1/1/2017                5 
1/2/2017                4
1/2/2017                9
1/2/2017               -1

我想做的是添加一个额外的列,is_min 如果这个日期的值最小,它将得到 1,否则 0

所以结果应该是:

 date                 value            is_min
1/1/2017               -3                1
1/1/2017               -1                0 
1/1/2017                5                0 
1/2/2017                4                0
1/2/2017                9                0 
1/2/2017               -1                1

我试过类似的东西

df['is_min']=df['value']==df.groupby('date')['value'].min()

但是,当然,df['value']df.groupby('date')['value'].min() 的长度不'匹配...

最佳答案

您可以使用 DataFrameGroupBy.idxmingroup 中找到最小索引,然后通过 isin 测试成员资格:

df['is_min'] = df.index.isin(df.groupby('date')['value'].idxmin()).astype(int)
print (df)
       date  value  is_min
0  1/1/2017     -3       1
1  1/1/2017     -1       0
2  1/1/2017      5       0
3  1/2/2017      4       0
4  1/2/2017      9       0
5  1/2/2017     -1       1

df['is_min'] = 0
df.loc[df.index.isin(df.groupby('date')['value'].idxmin()), 'is_min'] = 1
print (df)
       date  value  is_min
0  1/1/2017     -3       1
1  1/1/2017     -1       0
2  1/1/2017      5       0
3  1/2/2017      4       0
4  1/2/2017      9       0
5  1/2/2017     -1       1

关于python - 根据 groupby 值向 pandas 数据框添加一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209455/

相关文章:

python - Flask 测试 - 为什么覆盖范围不包括导入语句和装饰器?

python - 根据其他列上的某些条件更新 dask 数据框中列的值

python - 与 SQLAlchemy 的多对多模型连接

python - Pandas 系列的分段线性函数

python - 在另一个 1d/2d 向量之后重采样(缩小)2D 向量

python - Pandas 数据框和字典的深度复制

python - 如何对 pandas 数据框应用两个样本比例测试?

python - 无法从 JSON 结果中检索值

python - SQLAlchemy - 获取表列表

python - 使用 .loc 或 .iloc 代替 .ix