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)