我正在尝试编写一个GUI(使用kivy),部分操作一个Dataframe。其中之一是让按钮调用函数。此函数将增加数据框中的值。但是,我无法使其正常工作。我相信这与更改传递的值的功能有关,而不是与它所来自的内存有关。这是我所学的例子:
def change(thing, new):
thing = new
df = pd.DataFrame(
{"a" : [1 ,3],
"b" : [2, 4]})
print(df)
>>> a b
0 1 2
1 3 4
change(df.at[0, 'a'], 7)
print(df)
>>> a b
0 1 2
1 3 4
df.at[0, 'a'] = 7
print(df)
>>> a b
0 7 2
1 3 4
.loc
和.at
都会在函数外部按预期更改Dataframe。我不确定如何从函数更改它。如果有用,下面是我正在使用的一些(简化)实际代码块,希望可以阐明我的意图:
def cell(value):
entry = TextInput(text=str(value))
def increment_up(value, instance):
value += 1
entry.text = str(value)
button_up = Button(text='up',
on_release=partial(increment_up, value))
layout_buttons.add_widget(button_up)
以上,我正在尝试创建一个具有文本字段和向上按钮的“单元格”。按下向上按钮时,它应使value
递增。它像这样发挥作用my_layout.add_widget(cell(df.loc[i, 'Times']))
答案 0 :(得分:0)
感谢@ cs95。与其尝试更改函数中的参数,不如更改我们作为所述参数提供给它的数据框的一部分,而是让函数更改我们通过参数指定的数据框。请原谅我的非技术性解释。
def change2(df, row, col, new):
df.at[row, col] = new
my_df = pd.DataFrame(
{"a" : [1 ,3],
"b" : [2, 4]})
change2(my_df, 0, 'a', 7)
print(my_df)
>>> a b
0 7 2
1 3 4