属性错误:'DataFrame'对象没有'set_value'属性。

16

我正在使用Flask,在set_values处出现错误。我正在从HTML中读取输入并将其传递到代码。

@app.route('/home', methods=['POST'])
def first():
    source = request.files['first']
    destination = request.files['second']
    df = pd.read_csv(source)
    df1 = pd.read_csv(destination)
    val1 = int(request.form['val1'])
    val2 = int(request.form['val2'])
    val3 = int(request.form['val3'])
    target = request.form['str']
    df2 = df[df.columns[val2]]
    count = 0
    for j in df[df.columns[val1]]:
        x = df1.loc[df1[df1.columns[val3]] == j].index.values
        for i in x:
            df1.set_value(i, target, df2[count])
        count = count + 1
    df1.to_csv('result.csv', index=False)

2
你能给我们提供完整的堆栈错误信息吗? - Bendik Knapstad
1个回答

48

检查你的pandas版本。

df.set_value()从pandas 0.21.0版本开始已被弃用。

请使用df.at代替。

import pandas as pd

df = pd.DataFrame({"A":[1, 5, 3, 4, 2], 
                   "B":[3, 2, 4, 3, 4],  
                   "C":[2, 2, 7, 3, 4], 
                   "D":[4, 3, 6, 12, 7]}) 

df.at[2,'B']=100

   A    B  C   D
0  1    3  2   4
1  5    2  2   3
2  3  100  7   6
3  4    3  3  12
4  2    4  4   7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接