我希望将一组数据与该数据的汇总汇总进行比较。你知道吗
在下面的例子中,我想知道与所有餐馆的总收入相比,每个餐馆能赚多少钱。我想在白天知道这个。如果当天餐厅关闭,我仍然希望返回当天的名称和餐厅名称,并在“总账单”列中加上NaN(或零)。你知道吗
(我知道还有其他方法可以做到这一点,但请将此视为一个关于合并的问题,因为需要使用两个不同的数据帧进行合并是有原因的)
所以,我想要的结果是:
day total_bill_x restaurant total_bill_y
Fri 651.76 DINER A 325.88
Sat 3,556.80 DINER A 1,778.40
Sun 1,627.16 DINER A NaN
Thur 2,192.66 DINER A 1,096.33
但由于外连接的工作性质,我能得到的最远结果是:
day total_bill_x restaurant total_bill_y
Fri 651.76 DINER A 325.88
Sat 3,556.80 DINER A 1,778.40
Sun 1,627.16 NaN NaN
Thur 2,192.66 DINER A 1,096.33
问题是,我想不出有什么合并可以支持这种类型的输出-如果没有匹配的话,食客A就会消失。你知道吗
更糟糕的是,我的真实数据集将由几十家餐厅组成。你知道吗
有没有可能做一个外部连接,如果不匹配,它会从要连接到的表中获取字段?对于较小表中没有匹配项的记录,如何查看较大表中的所有记录?你知道吗
我认为这是一个有趣的问题,而且我对其他人如何处理这个问题很感兴趣。。谢谢!你知道吗
示例代码如下:
import pandas as pd
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
df2=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
df=df[df['day']!="Sun"]
df['restaurant']="DINER A"
df3=df.append(df2)
df_output=df.groupby(['restaurant','day'])[['total_bill']].sum().reset_index()
df_output2=df3.groupby(['day'])[['total_bill']].sum().reset_index()
pd.merge(df_output2,df_output, on='day', how="outer")
你可以分两步来做。首先将餐厅A的总账单的值映射到df\ U output2
给你
现在将DINER_A列融化,创建两列restaurant和total_bill
你得到了吗
设置
建立一个
pd.MultiIndex
与所有餐厅和日子做
groupby
+join
+reindex
相关问题 更多 >
编程相关推荐