Python 如何通过查询压缩行?

Python 如何通过查询压缩行?,python,pandas,Python,Pandas,我有一个熊猫式的数据库 {Value:[1,2,3,4,5,6,7],Time:[0,0,0,1,1,1,1],Name:[Rat,Rat,Dog,Rat,Rat,Dog,Cat]}. 我的目标是制作一个看起来像 {Value:[1.5,4.5,3,6,7],Name:[RatT0,RatT1,DogT0,DogT1,CatT1]}. 我已经研究了pandas.crosstab、pandas.merge和pivot表,它们都没有提供一个明显的方法来实现这一点groupby似乎很有希望,但我不

我有一个熊猫式的数据库

{Value:[1,2,3,4,5,6,7],Time:[0,0,0,1,1,1,1],Name:[Rat,Rat,Dog,Rat,Rat,Dog,Cat]}.
我的目标是制作一个看起来像

{Value:[1.5,4.5,3,6,7],Name:[RatT0,RatT1,DogT0,DogT1,CatT1]}.

我已经研究了
pandas.crosstab
pandas.merge
pivot表
,它们都没有提供一个明显的方法来实现这一点
groupby
似乎很有希望,但我不太明白如何让它尊重预先存在的边界。

你到底想做什么?只需将1/0添加到您的姓名列

df = pd.DataFrame({'Value':[1,2,3,4,5,6,7],'Time':[0,0,0,1,1,1,1],
                   'Name':['Rat','Rat','Dog','Rat','Rat','Dog','Cat']})

df['new_name'] = df['Name'] + 'T' + df['Time'].astype('str')

修改“名称”列,然后修改
groupby
+
mean

df['Name'] = df.Name + 'T' + df.Time.astype('str')
df.groupby('Name', as_index=False).Value.mean()

    Name  Value
0  CatT1    7.0
1  DogT0    3.0
2  DogT1    6.0
3  RatT0    1.5
4  RatT1    4.5

如图所示,您希望使用相同的
'Time'
组成具有相同
'Name'
的组,因此您将
groupby
这两列,并选择如何处理分组数据(在这种情况下,确定
'Value'
列的平均值)。然后,您可以根据需要修改名称,并删除冗余的
'Time'

df = df.groupby(['Name', 'Time'], as_index=False).Value.mean()
#  Name  Time  Value
#0  Cat     1    7.0
#1  Dog     0    3.0
#2  Dog     1    6.0
#3  Rat     0    1.5
#4  Rat     1    4.5

df['Name'] = df.Name + 'T' + df.Time.astype('str')
df.drop(columns='Time', inplace=True)