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

我有一个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      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
值创建索引by
Hour
列:

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分钟后发现问题,然后找到问题,所以发布答案。