如何将来自函数的用户输入显示到 pandas 数据框中?

How can I display user input from a function into a pandas dataframe?

我正在尝试使用 Jupyter Notebook 和 pandas 从函数中获取用户输入并将其放入数据框中。这是迄今为止我得到的最接近的东西。我正在尝试从数学方程式生成数字并将这些结果保留在变量中。然后将该变量中的这些结果放入数据框中并显示在带列的行中。它必须从函数中调用。也许我可以将结果保存到 csv 中然后调用它?任何帮助将不胜感激!

def  main():
    global df
    n = eval(input("How  many  numbers  should  I  print?  "))
    print("This  program  illustrates  a  chaotic  function.") 
    x  =  eval(input("Enter  the first  number  between  0  and  1:  "))
    y  =  eval(input("Enter  the second  number  between  0  and  1:  "))
    for i  in  range(n):
        x = 3.9  *  x  *  ( 1  - x)
        y = 3.9  *  y  *  ( 1  - y)
        df = pd.DataFrame(columns = {"1st Number": [x], "2nd Number": [y]})
        print(df + (x,y))

input 仅在终端中有效。 Jupiter Notebook 基于网络 UI,这就是它不起作用的原因。

此时可以使用Jupiter Widget进行交互,代码示例如下:

import ipywidgets as widgets

def main(n, x, y):
    print((n, x, y))
    # do whatever you want
    
widgets.interact(main, n=widgets.IntSlider(), x=widgets.FloatSlider(min=0, max=1), y=widgets.FloatSlider(min=0, max=1));

如果之前没有安装widget包,可能需要先安装。

更多阅读:https://ipywidgets.readthedocs.io/en/latest/index.html#

你可以用这个,效果很好:

def  main():
    global df
    n = int(input("How  many  numbers  should  I  print?  "))
    print("This  program  illustrates  a  chaotic  function.") 
    x  =  float(input("Enter  the first  number  between  0  and  1:  "))
    y  =  float(input("Enter  the second  number  between  0  and  1:  "))
    X = []
    Y = []
    for i  in  range(n):
        x = 3.9  *  x  *  ( 1  - x)
        X.append(x)
        y = 3.9  *  y  *  ( 1  - y)
        Y.append(y)
        df = pd.DataFrame(list(zip(X, Y)),
               columns =['1st Number', '2nd Number'])
        
        print(df + (x,y))