当前位置: 首页 > 知识库问答 >
问题:

如何在熊猫/Python中使用DataFrame编写函数?

丌官博文
2023-03-14

假设我们在下面的数据框中有一个带有sum()?

df.columns=['value_a','value_b','name','up_or_down','difference']
# from here
df.loc['sum'] = df[['value_a','value_b','difference']].sum()
df1 = df[['value_a','value_b','difference']].sum().to_frame().T
df = pd.concat([df1, df], ignore_index=True)
# end here
df

                                 value_a               value_b       name               up_or_down   difference
project_name
                                   27.56               25.04                                        -1.31     
2021-project11                      0.43               0.48        2021-project11            up        0.05
2021-project1                        0.62               0.56          2021-project1            down       -0.06
2021-project2                       0.51               0.47       2021-project2           down       -0.04
2021-porject3                       0.37               0.34         2021-porject3            down       -0.03
2021-porject4                       0.64               0.61         2021-porject4            down       -0.03
2021-project5                        0.32               0.25          2021-project5            down       -0.07
2021-project6                       0.75               0.81         2021-project6            up        0.06
2021-project7                      0.60               0.60        2021-project7            down        0.00
2021-project8                       0.85               0.74         2021-project8            down       -0.11
2021-project10                      0.67               0.67        2021-project10            down        0.00
2021-project9                     0.73               0.73        2021-project9           down        0.00
2021-project11                   0.54               0.54      2021-project11           down        0.00
2021-project12                 0.40               0.40    2021-project12           down        0.00
2021-project13                      0.76               0.77        2021-project13            up        0.01
2021-project14                     1.16               1.28        2021-project14           up        0.12
2021-project15                     1.01               0.94        2021-project15           down       -0.07
2021-project16                      1.23               1.24        2021-project16            up        0.01
2022-project17                       0.40               0.36          2022-project17           down       -0.04
2022-project_11                      0.40               0.40        2022-project_11            down        0.00
2022-project4                        1.01               0.80          2022-project4            down       -0.21
2022-project1                        0.65               0.67          2022-project1            up        0.02
2022-project2                    0.75               0.57       2022-project2           down       -0.18
2022-porject3                       0.32               0.32         2022-porject3            down        0.00
2022-project18                       0.91               0.56         2022-project18            down       -0.35
2022-project5                        0.84               0.89          2022-project5            up        0.05
2022-project19                      0.61               0.48        2022-project19            down       -0.13
2022-project6                       0.77               0.80         2022-project6            up        0.03
2022-project20                      0.63               0.54         2022-project20           down       -0.09
2022-project8                       0.59               0.55         2022-project8            down       -0.04
2022-project21                       0.58               0.54         2022-project21            down       -0.04
2022-project10                      0.76               0.76        2022-project10            down        0.00
2022-project9                     0.70               0.71        2022-project9           up        0.01
2022-project22                    0.62               0.56      2022-project22            down       -0.06
2022-project23               2.03               1.74  2022-project23           down       -0.29
2022-project12                 0.39               0.39    2022-project12           down        0.00
2022-project24                      1.35               1.55         2022-project24           up        0.20
project25                         0.45               0.42           project25            down       -0.03
project26                         0.53                NaN         project26              down         NaN
project27                           0.68                NaN           project27              down         NaN

我可以添加一个具有如下条件的函数,并且我们的其他df值可以直接使用该函数吗?

def sum_handler(x):
    if .......
        return .....
    elif .......
        return .....
    else
        return .....

非常感谢你的建议


共有1个答案

吕宇定
2023-03-14

您可以尝试一种不同的方法来总结您的数据帧,如下面的答案所示。

df.loc['Total'] = df.sum(numeric_only=True, axis=0)

由于这是一行代码,因此不需要创建自定义函数来完成此操作。但是为了将来的参考,您可以创建一个自定义函数并将其应用于这样的数据帧:

import pandas as pd

def double_columns(df: pd.DataFrame, columns: list[str]):
    """ Doubles chosen columns of a dataframe """
    df[columns] = df[columns] * 2
    return df

df = pd.DataFrame({'col1': [1,2], 'col2': [2,3]})
df = double_columns(df, ['col1'])
print(df)

会返回

   col1  col2
0     2     2
1     4     3
 类似资料:
  • 我只想从csv文件中返回这些特定列,并将其写入新的csv文件? 我该怎么做 到目前为止,我可以读取数据!!但不知道怎么写 绝对PYTHON BEGGINER警报

  • 问题内容: 我正在使用to_csv将Multiindex DataFrame写入csv文件。csv文件的一列包含元组中的多索引,例如: 但是,我希望能够将Multiindex输出到两列而不是一列的元组,例如: 看起来可以为列实现此目的,但对于行则没有这样的选择。有没有办法做到这一点? 问题答案: 我认为这可以做到 使用索引重复来编写(虽然有点骇人听闻) 回读实际上有点棘手

  • 问题内容: 我有以下熊猫数据框: 我想计算的是每人参加和未参加的活动数量,以及每人的总积分。所以我做一个groupby: 这会给我类似的东西: 但我想要类似的东西: 我尝试使用pd.MultiIndex尝试填充丢失的零计数,但无济于事。我已经阅读了其他类似的问题,但是在使用MultiIndex处理连续点列时遇到了麻烦。任何想法如何做到这一点? 问题答案: 您可以使用+做到这一点。为了您与精确的输出

  • 我试图加载一个csv文件内基于熊猫的数据帧。我使用了以下导入。 没有找到文件是抛出错误,回溯如下: ()中的FileNotFoundError回溯(最近一次调用)---- c:\users\saish\appdata\local\programs\python\python35-32\lib\site packages\pandas\io\parsers。语法分析器中的py\u f(文件路径或缓冲

  • 问题内容: Pandas确实很棒,但令我惊讶的是,从Pandas.DataFrame检索值的效率低下。在下面的玩具示例中,即使DataFrame.iloc方法也比字典慢100倍以上。 问题:这里的教训仅仅是字典是查找价值的更好方法吗?是的,我知道那正是他们的目的。但是我只是想知道是否缺少有关DataFrame查找性能的信息。 我意识到这个问题比“提问”更“有趣”,但是我会接受一个提供洞察力或观点的

  • 本文向大家介绍如何在Python中编写递归函数?,包括了如何在Python中编写递归函数?的使用技巧和注意事项,需要的朋友参考一下 一个递归 函数是它的执行过程中调用自身的函数。这使函数可以重复多次,输出结果和每次迭代的结束。递归与无限有关。  下面是一个递归函数示例,用于查找整数的阶乘。 数字的阶乘 是从1到该数字的所有整数的乘积。  例如,阶乘9(表示为9!)为1 * 2 * 3 * 4 *