Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按最小值分组并用另一列中的值填充NAs_Python_Pandas - Fatal编程技术网

Python 按最小值分组并用另一列中的值填充NAs

Python 按最小值分组并用另一列中的值填充NAs,python,pandas,Python,Pandas,我有一个样本数据框,看起来像这样 df = pd.DataFrame (data = {'uid': [1,1,1,2,2,3], 'pagename':['home', 'blah', 'blah', 'home', 'blah', 'blah'], 'startpage': ['NA', 'NA', 'NA', 'home', 'home', 'blah'], 'date_time': [0,1,2,5,9,1]}) 我要做的是按UID分组,并找到最小日期和时间。如果min date_

我有一个样本数据框,看起来像这样

df = pd.DataFrame (data = {'uid': [1,1,1,2,2,3], 'pagename':['home', 'blah', 
'blah', 'home', 'blah', 'blah'], 'startpage': ['NA', 'NA', 'NA', 'home', 
'home', 'blah'], 'date_time': [0,1,2,5,9,1]})
我要做的是按UID分组,并找到最小日期和时间。如果min date_time的起始页为Null(我将字符串“NA”表示Null),那么我希望使用该行的pagename来填充起始页列。我还希望为具有相同UID的所有行填充startpage

这是我想要的结束数据帧

df = pd.DataFrame (data = {'uid': [1,1,1,2,2,3], 'pagename':['home', 'blah', 
'blah', 'home', 'blah', 'blah'], 'startpage': ['home', 'home', 'home', 
'home', 'home', 'blah'], 'date_time': [0,1,2,5,9,1]})

fillna
transform

i = df.groupby('uid').date_time.transform('idxmin')
df.startpage = df.startpage.fillna(i.map(df.pagename))

print(df)

   date_time pagename startpage  uid
0          0     home      home    1
1          1     blah      home    1
2          2     blah      home    1
3          5     home      home    2
4          9     blah      home    2
5          1     blah      blah    3

非常有趣的解决方案!