gpt4 book ai didi

python - 从 .apply 添加列到数据框

转载 作者:行者123 更新时间:2023-11-28 21:37:54 24 4
gpt4 key购买 nike

我在操作数据框以创建其他人的新变量函数时遇到了一个小问题。

我可以计算它,但不能将它聚合回原始数据框。

这里有我的 test 数据框和我的 new_column

test = pd.DataFrame({'name': ["john", "jack", "albert"],
'day': ["2018-01-01", "2018-01-02", "2018-01-03"],
'result': ['c("7", "6", "")', 'c("3", "6", "10")', 'c("4", "3", "")']})

def update_result(row, x):
return row[x].replace("c(", "").replace(")","").replace("\"","").replace(" ","").split(",")

new_column=test.apply(lambda row: update_result(row,2),axis=1)

但是当我尝试将 new_column 添加到 data_frame 时,我收到了一条有关操作副本的错误消息。您知道聚合此列的正确方法是什么吗?

test['result2']=new_column

我得到了:

ValueError: Wrong number of items passed 3, placement implies 1

 # check if we are modifying a copy

感谢您的帮助。

最佳答案

如果你想将一个函数应用到特定的列,你可以这样尝试:

test['result2']=test['result'].apply(lambda row: row.replace("c(", "").replace(")","").replace("\"","").replace(" ","").split(","))

Out[5]:
day name result result2
0 2018-01-01 john c("7", "6", "") [7, 6, ]
1 2018-01-02 jack c("3", "6", "10") [3, 6, 10]
2 2018-01-03 albert c("4", "3", "") [4, 3, ]

如果出现 SettingWithCopyWarning 警告,您可以尝试按照建议设置或更新列:

new_col=test['result'].apply(lambda row: row.replace("c(", "").replace(")","").replace("\"","").replace(" ","").split(","))
test.loc[:, 'result2'] = new_col

loc 命令需要指定要选择的行(: 表示所有行)和哪一列(result2 是您想要创建的列,或者如果您想要更新现有列,例如 result,您也可以)。

你也可以看看这个页面,这个主题解释得很好here .

关于python - 从 .apply 添加列到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48835158/

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