gpt4 book ai didi

python - 修改多列数据框

转载 作者:行者123 更新时间:2023-12-01 01:15:35 25 4
gpt4 key购买 nike

我创建了一个多列(嵌套列),如下所示:

  input          action result
1 2 3 4 action 1 2 3 4
0 89 3 0 5

然后我想向它添加值,使其看起来像这样:

  input          action result
1 2 3 4 action 1 2 3 4
0 89 3 0 5 64 1 54 0 34

这是我首先制作该数据框的方法(这有效):

def create_memory_from_input(input: dict) -> pd.DataFrame:
''' creates a dataframe from input dictionary'''
arrays = [
['input' for k in sorted(input.keys())] + ['action'] + ['result' for k in sorted(input.keys())],
[k for k in sorted(input.keys())] + ['action'] + [k for k in sorted(input.keys())]]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
values = [[v for _,v in sorted(input.items())] + [''] + ['' for _,v in sorted(input.items())]]
return pd.DataFrame(list(values), columns=index)

这是我必须将操作和结果附加到数据帧的代码,但它不起作用。我是否正确引用了嵌套列?

input = {2:3, 1:89, 4:5, 3:0}
original = create_memory_from_input(input)
action = 64
result = {2:54, 1:1, 4:34, 3:0}
original['action']['action'][
(original['input'][1] == 89) &
(original['input'][2] == 3) &
(original['input'][3] == 0) &
(original['input'][4] == 5)] = action

如有任何反馈,我们将不胜感激。我考虑过创建一个新的数据框,然后合并输入列,但这似乎不如简单地过滤数据框并将列设置为正确的值那么有效。

我做错了什么?

最佳答案

在这种情况下你应该使用 loc 否则你会得到一个链式赋值。看这个article为了进一步明确。

使用 loc 将数据附加到 DataFrame 的代码如下所示:

input = {2:3, 1:89, 4:5, 3:0}
original = create_memory_from_input(input)
action = 64
result = {2:54, 1:1, 4:34, 3:0}

original.loc[0, ('action', 'action')] = action
for num in range(1, 5):
original.loc[0, ('result', num)] = result[num]

关于python - 修改多列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54385741/

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