我有一个数据框:
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.idxmin
在 group
中找到最小索引,然后通过 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/