【问题标题】:python pandas in person class个人课程中的python pandas
【发布时间】:2022-01-26 00:38:22
【问题描述】:

我有一个人员类,它有 2 个方法,管理员登录和登录。

def admin_sign_in(self):#this instance make a csv file of admins username and pass
        info = {'user_name' : [self.username] , 'password' : [self.password]}
        self.admin_df = pd.read_csv('admin_file.csv',sep = ',')
        self.admin_df= pd.DataFrame(info)
        c = self.admin_df.index.values[-1]
        self.admin_df.loc[c+1 ,['user_name','password']]
        x = self.admin_df.to_csv('admin_file.csv',header= True ,index = False , mode = 'a')
        return x

但在 csv 文件中,我制作的每个对象都使用标题和 0 索引保存。 你有什么管理它的建议吗?

【问题讨论】:

  • 欢迎来到Stack Overflow.。为了让我们为您提供帮助,您有必要提供一个最小的可重现问题集,其中包括样本输入、预期输出、实际输出以及重现该示例所需的所有相关代码。你所提供的没有达到这个目标。请编辑您的问题以显示最小的可重现集。详情请见Minimal Reproducible Example
  • 你为什么有这条线? self.admin_df = pd.read_csv('admin_file.csv',sep = ',')。在下一行直接覆盖。标题在那里是因为你设置了headeres=Trueexplicitly
  • 如果您附加到文件,那么您不必阅读它。

标签: python pandas dataframe


【解决方案1】:

如果您使用append 模式运行,那么您应该运行它headeres=False

您可以仅创建(手动)带有标题的文件,然后在不带标题的情况下追加新行

import pandas as pd

username = 'james_bond'
password = '007'

info = {
    'username': [username],
    'password': [password],
}

df = pd.DataFrame(info)
df.to_csv('admin_file.csv', header=False, index=False, mode='a')

不需要读取之前的内容,在末尾使用loc[c+1, ...]追加。


最终你可以在没有标题的情况下编写所有内容,并在阅读时添加标题

df = pd.read_csv('admin_file.csv', names=['username', 'password'])

但最好阅读以前的内容并检查用户名是否不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多