我想创建一个小程序,允许我在Python中使用raw_input
(现在只是输入)函数将一组数字输入到OLS函数中
目前我的代码看起来像这样
import pandas as pd
from pandas import DataFrame
from pandas.stats.api import ols
inp=raw_input("Enter String A")
A=map(int,inp.split())
inp=raw_input("Enter String B")
B=map(int,inp.split())
inp=raw_input("Enter String C")
C=map(int,inp.split())
def firstreg():
df = pd.DataFrame({'A':[A], 'B':[B], 'C':[C]})
reg = ols (y=df['A'], x=df[['B','C']])
print reg
firstreg()
正如您所看到的,我正在尝试使用A=map(int,inp.split())
来解决我的问题。它没用。我还使用了A=array(inp)
和A=float(inp)
以及A=str(inp)
来尝试解决我的问题而无济于事。主要问题是OLS功能是Pandas需要输入才能成为一个字符串才能工作。
我希望程序运行如下:
将文件作为regression.py
它要求输入字符串A
def firstreg():
我希望这个问题有道理。
答案 0 :(得分:1)
看起来这段代码的问题是你在这一行的另一个列表中嵌入了整数列表:
df = pd.DataFrame({'A':[A], 'B':[B], 'C':[C]})
你在这里做的是使用map函数获取你在上面创建的每个列表,然后将它放在另一个列表中。输入字符串[A]
的{{1}}将变为"1 2 3"
,这不是我们想要的。将该行替换为:
[[1, 2, 3]]
它应该有用。
修改强>
完整写出:
df = pd.DataFrame({'A': A, 'B': B, 'C': C})