首页 > 解决方案 > 有没有办法将原始输入存储在应用于python中数据框的函数中?

问题描述

    def update():
        name = input('Which Country?')
        if df.loc[name, 'added'] == 0:
            df.loc[name, 'added'] = 'x'
            return df.loc[name, 'added']
        return 'Already Updated!!'
  

我在 df['Country'] 和 df['add'] 列中创建了一个包含国家列表的表格,并且每次我进入一个国家时,上面的函数都应该用 'x' 更新 df['add']。比如我输入了'Afghanistan','add'的阿富汗行会从0变成'x',标记为完成。但是,当我输入一个新值(例如“阿尔巴尼亚”)时,阿尔巴尼亚将被更新,但随后阿富汗将恢复为原始 0...我想知道是否有办法将原始输入存储在数据框中(例如阿富汗)而不是新的输入替换它?

标签: pythonpandasdataframe

解决方案


这应该可以帮助你:

import pandas as pd
def update(df):    
    name = input('Which Country?')
    index = df.loc[df['Country']==name].index[0]
    if df.loc[index,'added'] == '0':
        df.loc[index,'added'] = 'x'
        return df.loc[index, 'added']
    return 'Already Updated!!'
df = pd.DataFrame({'Country':['Afghanistan','Albania'],'added':['0','0']})
ans = update(df)
print(ans)
ans = update(df)
print(ans)
print(df.head())

这是整个代码。这将正确更新 df 并且还将返回您想要的值。您犯的错误是您没有df.loc正确使用该功能。改变这给了我正确的输出。另外,x 没有恢复为 0,这意味着此代码可以正常工作。请让我知道这是否对您有用,欢迎提出任何问题!


推荐阅读