为了账号安全,请及时绑定邮箱和手机立即绑定

我无法正确地将一个(Pandas)数据帧附加到另一个数据帧

我无法正确地将一个(Pandas)数据帧附加到另一个数据帧

至尊宝的传说 2023-07-11 14:31:09
我怎样才能实现这一目标DoT Product?我无法将一个附加Pandas DataFrame到另一个。我不需要冗长的解决方案,而是需要一个简单的Pandas代码Numpy。产品价格: Apple Price = 3Cherry Price = 4Blueberry Price = 2预期输出:                     Apple        Cherry     Blueberry       Mon                 13           8             6Tues                9            7             4Wed                 7            4             0Thurs               15           6             3Total Rev.($)       83           63            37我的代码: prod_prices = np.array([3,4,2])prod_pricesprod_days = np.array([[13,9,7,15],                    [8,7,4,6],                    [6,4,0,3]]).Tprod_daysdf_week_sales = pd.DataFrame(prod_days,                 index=["Mon","Tues","Wed","Thurs"],                columns=["Apple","Cherry","Blueberry"])df_week_salesweekly_total = df_week_sales.dot(prod_prices)weekly_totaltype(weekly_total)weekly_total_nparray = np.array(weekly_total)type(weekly_total_nparray)weekly_total_nparraydf_weekly_total_nparray = pd.DataFrame(weekly_total_nparray.reshape(1,4))df_weekly_total_nparrayweekly_revenue_data = df_week_sales.append(df_weekly_total_nparray)weekly_revenue_data这给了我以下输出:
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

prices = {'Apple': 3, 'Cherry': 4, "Blueberry": 2}

df_week_sales = pd.DataFrame(prod_days,

                 index=["Mon","Tues","Wed","Thurs"],

                columns=["Apple","Cherry","Blueberry"])

df_week_sales


       Apple  Cherry  Blueberry

Mon       13       8          6

Tues       9       7          4

Wed        7       4          0

Thurs     15       6          3

转置:


df = df_week_sales.transpose()


           Mon  Tues  Wed  Thurs

Apple       13     9    7     15

Cherry       8     7    4      6

Blueberry    6     4    0      3


df['Total Revenue'] = [np.sum(df_week_sales[x]*prices[x]) for x in df_week_sales.columns]



df


           Mon  Tues  Wed  Thurs  Total Revenue

Apple       13     9    7     15            132

Cherry       8     7    4      6            100

Blueberry    6     4    0      3             26


results = df.transpose()


               Apple  Cherry  Blueberry

Mon               13       8          6

Tues               9       7          4

Wed                7       4          0

Thurs             15       6          3

Total Revenue    132     100         26


prod_prices = np.array([3,4,2])

results['Revenue'] = df_week_sales.dot(prod_prices)


               Apple  Cherry  Blueberry  Revenue

Mon               13       8          6     83.0

Tues               9       7          4     63.0

Wed                7       4          0     37.0

Thurs             15       6          3     75.0

Total Revenue    132     100         26      NaN

了解您的预期输出底部是 83、63、37,但这根本没有意义。83 = 13*3 + 8*4 + 6*2, 63 = 9*3 + 4*2, 同样对于37. 那么你的75. 数据不应该以该方向显示。所以我会坚持这种方式,这样对于表示数据来说更有意义。


查看完整回答
反对 回复 2023-07-11
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

你可以尝试这样的事情:


prod_prices = np.array([3,4,2])


prod_days = np.array([[13,9,7,15],

                    [8,7,4,6],

                    [6,4,0,3]]).T

df_week_sales = pd.DataFrame(prod_days,

                 index=["Mon","Tues","Wed","Thurs"],

                columns=["Apple","Cherry","Blueberry"])


# obtain the dot product

weekly_total = prod_days.dot(prod_prices)


# obtain the last row index of the data frame

jj = df_week_sales.shape[0]


# get the list to append to the data frame (need to be of the same column length)

df_week_sales.loc[jj] = weekly_total[:-1]


# rename the last index as desired

df_week_sales.rename(index={jj: 'Total Rev.($)'}, inplace=True)

df_week_sales


查看完整回答
反对 回复 2023-07-11
?
翻阅古今

TA贡献1780条经验 获得超5个赞

您可以通过两行来实现此目的:


total_revenues = [df_week_sales[x].sum() for x in df_week_sales.columns]* prod_prices

output = pd.concat([df_week_sales, pd.DataFrame(total_revenues, index= df_week_sales.columns, columns = ['Total Revenue']).T])

输出


|               |   Apple |   Cherry |   Blueberry |

|:--------------|--------:|---------:|------------:|

| Mon           |      13 |        8 |           6 |

| Tues          |       9 |        7 |           4 |

| Wed           |       7 |        4 |           0 |

| Thurs         |      15 |        6 |           3 |

| Total Revenue |     132 |      100 |          26 |


查看完整回答
反对 回复 2023-07-11
  • 3 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信