gpt4 book ai didi

python - 添加一个新的 pandas dataframe 列,用条件计算填充它(平均如果,标准差如果)

转载 作者:行者123 更新时间:2023-12-05 03:59:47 30 4
gpt4 key购买 nike

我需要向填充有条件均值和标准差的 Pandas 数据框添加 2 列。

# Import pandas library 
import pandas as pd

# Initialize list of lists
data = [
['Tom', 'Blue', 'Small', 10, ],
['Tom', 'Blue', 'Big', 15, ],
['Tom', 'Red', 'Big', 3, ],
['Tom', 'Red', 'Small', 8, ],
['Tom', 'Red', 'Medium', 5, ],
['Tom', 'Blue', 'Medium', 12, ],
['Nick', 'Blue', 'Small', 15, ],
['Nick', 'Red', 'Medium', 11, ],
['Nick', 'Red', 'Small', 17, ],
['Julie', 'Blue', 'Big', 14, ],
['Julie', 'Red', 'Big', 11, ],
['Julie', 'Red', 'Medium', 3, ],
['Julie', 'Red', 'Medium', 4, ],
]

# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Colour', 'Size', 'Age'])

# print dataframe.
df

在这个例子中,我需要添加 2 列:df['mean']df['std'] 仅以名称和颜色为条件。

我查看了 .mean().std() 文档,但没有找到添加一组条件的方法。我相信我可能需要 2 个函数,对于每一行,将名称和颜色作为参数,计算整个系列的平均值或标准差,然后填充新列。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html

我相信我需要一个函数来动态检查每一行的名称和颜色,因为与此示例数据框不同,我的应用程序适用于具有数千种名称和数千种颜色的数据框。

我知道如何无条件地将 .mean.std 应用于整个 pandas 系列:

df['Age'].std()

df['Age'].mean()

我还发现 group by + 转换做了一些稍微类似的事情,但没有像函数那样动态检查每一行的能力。

df['mean'] = df.groupby(['Name','Colour']).transform('mean')

感谢您的帮助。

这是我预期的输出。感谢您的回答: Output dataframe

最佳答案

由于transform不支持std,我们可以通过groupby().aggmerge绕过:

new_df = df.groupby(['Name', 'Colour']).Age.agg({'mean','std'})
df = df.merge(new_df, left_on=['Name', 'Colour'], right_index=True)

输出:

     Name Colour    Size  Age       std       mean
0 Tom Blue Small 10 2.516611 12.333333
1 Tom Blue Big 15 2.516611 12.333333
5 Tom Blue Medium 12 2.516611 12.333333
2 Tom Red Big 3 2.516611 5.333333
3 Tom Red Small 8 2.516611 5.333333
4 Tom Red Medium 5 2.516611 5.333333
6 Nick Blue Small 15 NaN 15.000000
7 Nick Red Medium 11 4.242641 14.000000
8 Nick Red Small 17 4.242641 14.000000
9 Julie Blue Big 14 NaN 14.000000
10 Julie Red Big 11 4.358899 6.000000
11 Julie Red Medium 3 4.358899 6.000000
12 Julie Red Medium 4 4.358899 6.000000

关于python - 添加一个新的 pandas dataframe 列,用条件计算填充它(平均如果,标准差如果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878546/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com