使用列表从熊猫数据框中读取特定行

时间:2019-06-26 08:08:21

标签: python pandas

我有一个熊猫数据框,我需要将特定的行从中拉出并放入新的数据框。 这些行在列表中看起来像这样:[42 50 52 59 60 62]

我正在从.csv文件创建数据框,但据我所知,在读取.csv并创建数据框时,无法指定行号。

import pandas as pd 

df = pd.read_csv('/Users/uni/Desktop/corrindex+id/rt35',index_col = False, header = None )

这是数据框的一部分:

                    0
0      1 269 245 44 5
1      2 293 393 33 5
2     3 295 175 67 12
3      4 298 415 33 5
4    5 304 392 213 11

3 个答案:

答案 0 :(得分:2)

skiprows与可调用对象一起使用:

import pandas as pd

keep_rows = [42 50 52 59 60 62]

df = pd.read_csv('/Users/uni/Desktop/corrindex+id/rt35', 
                 header=None
                 skiprows=lambda x: x not in keep_rows)

答案 1 :(得分:1)

不幸的是,熊猫read_cvs需要一个真实的文件,而不仅仅是行生成器,因此仅选择一堆行并不容易。但是您可以轻松地在Python级别做到这一点:

lines = [line for i, line in enumerate(open('/Users/uni/Desktop/corrindex+id/rt35'), 1)
         if i in [42 50 52 59 60 62]]
df = pd.read_csv(io.StringIO(''.join(lines)),index_col = False, header = None )

您还可以使用skiprows忽略除要保留的行以外的所有行:

df = pd.read_csv('/Users/uni/Desktop/corrindex+id/rt35',index_col = False, 
                 header = None, skiprows=lambda x: x not in [42 50 52 59 60 62])

答案 2 :(得分:0)

您可以这样处理:

app = Flask(__name__)


@app.route("/")
    def home():
return render_template("home.html")

@app.route("/loggedin")
    def innsiden():
return render_template("loggedin.html")

@app.route("/login", methods=['GET', 'POST'])
    def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'admin':
            error = 'Invalid Credentials. Please try again.'
    else:
        return redirect(url_for('loggedin'))
    return render_template('login.html', error=error)