基于raw_input对read_csv数据框中的列位置进行变量替换

时间:2016-01-27 23:03:18

标签: python csv pandas

我正在尝试简化我的代码......我想要做的是让用户输入一个数字。根据他们选择的数字,它将打印出csv中相应列的数据。这是我的代码:

读取csv并仅过滤必要的列:

df1 = pd.read_csv('c:/temp/test_1.csv', usecols=[0,1], header = 0)

从用户获取输入并分配变量:

n = raw_input("Please enter first choice: ")

检查空白条目,匹配raw_input条目,并打印出该列的结果:

if n != '' and n == '0':
    print df1.ix[:, 0]
elif n != '' and n == '1':
   print df1.ix[:, 1]
else:
   print "stop"

这一切都有效。但是,我觉得这不是最佳或有效的编码。

我必须列出列号的所有可能组合。如果我有多个用户输入问题,则会变得难以处理。

我希望动态地能够获取用户输入,分配变量,并将该变量放入一行,这将打印出列的信息。

在我看来(作为摘要):

df1 = pd.read_csv('c:/temp/test_1.csv', usecols=[0,1], header = 0)
number=raw_input("Please enter first choice: ")
print df1.ix[:, number]

我是Python新手,绝对可以使用帮助。在此先感谢!!

提比利乌斯

1 个答案:

答案 0 :(得分:1)

这样的事情可行:

from __future__ import print_function

df1 = pd.read_csv('c:/temp/test_1.csv', usecols=[0,1], header = 0)


while True:
    try:
        number = int(raw_input("Please enter first choice: "))
    except ValueError:
        print('Please enter a valid integer.')
        continue
    try:
        print(df1.ix[:, number])
    except IndexError:
        print('Please enter an index between 0 and {}'.format(len(df) - 1))
        continue
    break