如何合并动态数据帧
How to merge Dynamic Dataframes
我正在寻求帮助以添加两个动态生成的数据帧。
两个 DataFrame 都有一个根据来自 intslider ipywidget 的输入计算的列。
第三个 Dataframe 应该根据上述任何一个 Dataframes
的变化动态更新
import pandas as pd
from ipywidgets import interact
@interact(x=(0,1000,10))
def df_draw_one(x):
data = {"A":[1,2,3,4,5]}
df_one = pd.DataFrame(data)
df_one['B'] = df_one['A']*x
print(df_one)
@interact(x=(0,1000,10))
def df_draw_two(x):
data = {"A":[6,7,8,9,10]}
df_two = pd.DataFrame(data)
df_two['B'] = df_two['A']*x
print(df_two)
df_res = df_one+df_two
我理解当前的代码,df_one 和两个是本地的,因此导致:
NameError: name 'df_one' is not defined
但我不知道如何让它们易于访问。
任何指针将不胜感激
您可以让您的函数 return 在两个数据帧中添加 return
语句。
import pandas as pd
from ipywidgets import interact
@interact(x=(0, 1000, 10))
def df_draw_one(x):
data = {"A": [1, 2, 3, 4, 5]}
df_one = pd.DataFrame(data)
df_one['B'] = df_one['A'] * x
print(df_one)
return df_one
@interact(x=(0, 1000, 10))
def df_draw_two(x):
data = {"A": [6, 7, 8, 9, 10]}
df_two = pd.DataFrame(data)
df_two['B'] = df_two['A'] * x
print(df_two)
return df_two
df_one = df_draw_one(1)
df_two = df_draw_two(1)
df_res = df_one + df_two
print(df_res)
另一种方法是将 df_one
和 df_two
作为全局变量,但它很脏而且不是必需的。
更新
一种想法是在同一个函数中生成两个小部件,然后一切都变得更容易处理。
import pandas as pd
from ipywidgets import interact
@interact()
def df_draw_one(x=(0, 1000, 10), y=(0, 1000, 10)):
data = {"A": [1, 2, 3, 4, 5]}
df_one = pd.DataFrame(data)
df_one['B'] = df_one['A'] * x
data2 = {"A": [6, 7, 8, 9, 10]}
df_two = pd.DataFrame(data2)
df_two['B'] = df_two['A'] * y
display(df_one)
display(df_two)
df_res = df_one + df_two
display(df_res)
这是我的结果:
我正在寻求帮助以添加两个动态生成的数据帧。 两个 DataFrame 都有一个根据来自 intslider ipywidget 的输入计算的列。 第三个 Dataframe 应该根据上述任何一个 Dataframes
的变化动态更新import pandas as pd
from ipywidgets import interact
@interact(x=(0,1000,10))
def df_draw_one(x):
data = {"A":[1,2,3,4,5]}
df_one = pd.DataFrame(data)
df_one['B'] = df_one['A']*x
print(df_one)
@interact(x=(0,1000,10))
def df_draw_two(x):
data = {"A":[6,7,8,9,10]}
df_two = pd.DataFrame(data)
df_two['B'] = df_two['A']*x
print(df_two)
df_res = df_one+df_two
我理解当前的代码,df_one 和两个是本地的,因此导致:
NameError: name 'df_one' is not defined
但我不知道如何让它们易于访问。 任何指针将不胜感激
您可以让您的函数 return 在两个数据帧中添加 return
语句。
import pandas as pd
from ipywidgets import interact
@interact(x=(0, 1000, 10))
def df_draw_one(x):
data = {"A": [1, 2, 3, 4, 5]}
df_one = pd.DataFrame(data)
df_one['B'] = df_one['A'] * x
print(df_one)
return df_one
@interact(x=(0, 1000, 10))
def df_draw_two(x):
data = {"A": [6, 7, 8, 9, 10]}
df_two = pd.DataFrame(data)
df_two['B'] = df_two['A'] * x
print(df_two)
return df_two
df_one = df_draw_one(1)
df_two = df_draw_two(1)
df_res = df_one + df_two
print(df_res)
另一种方法是将 df_one
和 df_two
作为全局变量,但它很脏而且不是必需的。
更新 一种想法是在同一个函数中生成两个小部件,然后一切都变得更容易处理。
import pandas as pd
from ipywidgets import interact
@interact()
def df_draw_one(x=(0, 1000, 10), y=(0, 1000, 10)):
data = {"A": [1, 2, 3, 4, 5]}
df_one = pd.DataFrame(data)
df_one['B'] = df_one['A'] * x
data2 = {"A": [6, 7, 8, 9, 10]}
df_two = pd.DataFrame(data2)
df_two['B'] = df_two['A'] * y
display(df_one)
display(df_two)
df_res = df_one + df_two
display(df_res)
这是我的结果: