【发布时间】:2023-03-28 09:10:01
【问题描述】:
所以我得到了一个看起来像这样的 Pandas DataFrame:
import pandas as pd
df1 = pd.DataFrame([[5618, 5863, 8873, 7903, 9477, 7177, 7648, 9592],
[5698, 6009, 8242, 7356, 6191, 8817, 7340, 11781],
[5721, 6858, 8401, 6826, 6910, 6243, 6814, 9704]],
columns=["Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb"])
Output:
Jul Aug Sep Oct Nov Dec Jan Feb
0 5618 5863 8873 7903 9477 7177 7648 9592
1 5698 6009 8242 7356 6191 8817 7340 11781
2 5721 6858 8401 6826 6910 6243 6814 9704
首先我想插入 2 个索引为 3 和 4 的新行: 在第一个中,我想将第 1 行的值除以第 0 行的值:
Jul Aug Sep Oct Nov Dec Jan Feb
3 101,42 102,49 92,88 93,07 65,32 122,8 95,97 122,82
在第二个中,我想将第 1 行的值除以第 2 行的值:
Jul Aug Sep Oct Nov Dec Jan Feb
4 99,59 87,62 98,10 107,76 89,59 141,23 107,71 121,40
在下一步中,我想创建一个新列,其中包含当月原始值的总和以及新创建的行的平均值。
df1["Sum_Avg"] = df1.sum(axis=1)
Output:
Jul Aug Sep Oct Nov Dec Jan Feb Sum_Avg
0 5618 5863 8873 7903 9477 7177 7648 9592 62151
1 5698 6009 8242 7356 6191 8817 7340 11781 61434
2 5721 6858 8401 6826 6910 6243 6814 9704 57477
我不知道如何创建索引为 3 和 4 的行,所以我什至不知道如何将平均值与总和放在同一行。
最后,整个表格应如下所示: Img
到目前为止我尝试了什么:
使用第 0 行创建一个新的 DataFrame:
df2 = pd.DataFrame(df1.iloc[[0]])
df2
Output:
Jul Aug Sep Oct Nov Dec Jan Feb
0 5618 5863 8873 7903 9477 7177 7648 9592
使用第 1 行创建一个新的 DataFrame:
df3 = pd.DataFrame(df1.iloc[[1]])
df3
Output:
Jul Aug Sep Oct Nov Dec Jan Feb
1 5698 6009 8242 7356 6191 8817 7340 11781
用df2和df3的划分制作一个新的DataFrame:
df4 = df3/df2
df4
Output:
Jul Aug Sep Oct Nov Dec Jan Feb
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
这里的事情搞砸了,这就是我创建这篇文章的原因。
【问题讨论】:
-
请注意,您的示例与您所描述的有所不同。
In the second one i want to divide the values of row 1 by the values of row 2:似乎实际上是 row2/row1
标签: python pandas calculation