gpt4 book ai didi

python - Pandas 将 float append 到 for 循环中的列

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:42 25 4
gpt4 key购买 nike

我有 pandas DataFrame,我想在其中使用 df 中的元素进行一些计算,然后将计算出的数字 append 到同一 df 中的单独列中。

这是我目前的代码。

def percentfunction(df):
for i in range(100):
if df['month_number'][i] == 10:
df = df['percent_october'][i].add([df['cellsum'][i]/octobersum])
elif df['month_number'][i] == 11:
df = df['percent_november'][i].add([df['cellsum'][i]/novembersum])
elif df['month_number'][i] == 12:
df = df['percent_december'][i].add([df['cellsum'][i]/decembersum])

AttributeError: 'numpy.float64' object has no attribute 'add'

我已经尝试了这段代码的各种实现,但我总是收到一条错误消息。它要么到达最后一个元素,然后写入仅包含最后计算的数字的列,要么在不应添加任何内容的行中添加。

欢迎批评!

编辑:尝试编辑代码。

    def percentfunction(df):
for i in range(100):
if df['month_number'][i] == 10:
df['percent_october'][i] = df['cellsum'][i]/octobersum
elif df['month_number'][i] == 11:
df['percent_november'][i] = df['cellsum'][i]/novembersum
elif df['month_number'][i] == 12:
df['percent_december'][i] = df['cellsum'][i]/decembersum

我至少让它运行了,但这会在不应该运行的行中填充值...

EDIT2:这是我的数据框示例

>>> df.head()
Index month_number month_text \
0 Name1 10 October
1 Name1 11 November
2 Name1 12 December
3 Name2 10 October
4 Name2 11 November

2000 Unnamed: 4 2001 Unnamed: 6 2002 Unnamed: 8 2003 ... \
0 NaN NaN NaN NaN NaN NaN NaN ...
1 NaN NaN NaN NaN NaN NaN NaN ...
2 NaN NaN NaN NaN NaN NaN NaN ...
3 NaN NaN NaN NaN 2898.68 3120 NaN ...
4 NaN NaN NaN NaN NaN NaN NaN ...

Unnamed: 28 2013 Unnamed: 30 2014 Unnamed: 32 2015 Unnamed: 34 2016 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN 1.26 127 NaN NaN NaN

Unnamed: 36 cellsum
0 NaN 3899
1 NaN 7922
2 NaN 2181
3 NaN 3121
4 NaN 127

这是我的 DataFrame,“cellsum”是该行中所有“未命名”单元格的总和。我通过对 DataFrame 中的所有数据求和来计算总月总和,例如 october cellsums (octobersum)。然后我想添加一个新列,其中包含 cellsum 的百分比。我希望你能够明白。

最佳答案

你应该避免使用 pandas 循环。您需要这样的东西,然后您可以将其操作成您想要的任何格式:

df["percent_month"] = df.groupby("month_number").apply(lambda x: x/x.sum())

关于python - Pandas 将 float append 到 for 循环中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40226818/

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