Python数据争用
我有一个Python数据框架,如下所示:Python数据争用,python,pandas,Python,Pandas,我有一个Python数据框架,如下所示: print (df) Date Hour Weight 0 2019-01-01 8 1 1 2019-01-01 16 2 2 2019-01-01 24 6 3 2019-01-02 8 10 4 2019-01-02 16 4 5 2019-01-02 24 12 6 2019-01-03 8
print (df)
Date Hour Weight
0 2019-01-01 8 1
1 2019-01-01 16 2
2 2019-01-01 24 6
3 2019-01-02 8 10
4 2019-01-02 16 4
5 2019-01-02 24 12
6 2019-01-03 8 10
7 2019-01-03 16 6
8 2019-01-03 24 5
如何创建一个列(新列),该列将返回一天中“权重”最低值的“小时”值。我期待着:
Date Hour Weight New_Col
2019-01-01 8 1 8
2019-01-01 16 2 8
2019-01-01 24 6 8
2019-01-02 8 10 16
2019-01-02 16 4 16
2019-01-02 24 12 16
2019-01-03 8 10 24
2019-01-03 16 6 24
2019-01-03 24 5 24
与一起使用,但首先为每个最小Weight
组的Hour
值创建索引byHour
列:
df['New'] = df.set_index('Hour').groupby('Date')['Weight'].transform('idxmin').values
print (df)
Date Hour Weight New_Col New
0 2019-01-01 8 1 8 8
1 2019-01-01 16 2 8 8
2 2019-01-01 24 6 8 8
3 2019-01-02 8 10 16 16
4 2019-01-02 16 4 16 16
5 2019-01-02 24 12 16 16
6 2019-01-03 8 10 24 24
7 2019-01-03 16 6 24 24
8 2019-01-03 24 5 24 24
替代解决方案:
df['New'] = df['Date'].map(df.set_index('Hour').groupby('Date')['Weight'].idxmin())
您所有的代码只返回8,所以您的
print(df)
输出是误导性的。@cs95-ya,很遗憾,第一个和第二个示例数据是不同的。我首先找不到为什么所有的值都是8的问题,但后来我注意到了。我在你们发布任何东西之前就给出了这个答案,但我没有发布,因为数据是错误的。有时候最好的行动就是不回答。就我的2c。最好通知OP,这样他们可以先解决问题。是的,创建了解决方案,3分钟后发现问题,然后找到问题,所以发布答案。