如何从pandas的每个groupby对象中获取包含字符串的列的第一行?

2024-04-24 11:51:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下列的pandas数据框:“user”、“text1”、“text2”和“time”。我想按用户分组,并为每个用户取文本对应的最大时间。我尝试通过以下代码(使用first)来实现这一点:

import pandas

df = pandas.DataFrame({'user':['f','f','s'], 'text1':['111','222','333'], 'text2':[11,22,33], 'time':[1,2,3]}, columns=['user', 'text1', 'text2', 'time'])

print df    
print '----------------'

df = df.sort('time', ascending = False)

gr = df.groupby('user', as_index=False).first()
print gr

因此,我得出以下结论:

  user text1  text2  time
0    f   111     11     1
1    f   222     22     2
2    s   333     33     3
----------------
  user  text2  time
0    f     22     2
1    s     33     3

我们可以看到,它适用于text2包含整数的列,但不适用于text1包含字符串的列。为什么会发生这种情况,如何解决这个问题?你知道吗


Tags: 数据代码用户文本falsepandasdftime