【问题标题】:How to add user data to Excel file?如何将用户数据添加到 Excel 文件?
【发布时间】:2021-03-27 08:35:53
【问题描述】:

我有一个带有现成工作表的现成文件,我只需要在其中添加 2 列的数据,请帮助

| Teachers       | Subjects       |
| -------------- | -------------- |
| TeachersName   | SubjectsName   |
| TeachersName   | SubjectsName   |
| TeachersName   | SubjectsName   |
| TeachersName   | SubjectsName   |

def teach_add():
df = pd.read_excel(open('bd1.xlsx','rb'),sheet_name='teachers')
print(df[['Teachers','Subjects']])
mas = []
num = 2
df['Teachers'] = mas
ind  = int(input("Enter index: "))
for i in range(0, num):
    num2 = num2.split(' ')
    mas.append(num2)
print(mas)
df.loc[ind]=[mas]
df.to_excel('bd1.xlsx', sheet_name='teachers')

【问题讨论】:

  • 你尝试了什么?你试过什么模块?你搜索过这个教程吗?您必须使用某些模块将文件读取到内存中,在内存中添加新数据,并使用同一模块将内存中的所有数据保存回字段。
  • 我用过熊猫,请帮帮我
  • 我正在编辑这段代码
  • 所有教师的df['Teachers'] = masmas 没有[ ])怎么样。对于单一的撕裂者,将每个值直接放入for-loop df[Teachers].iloc[i] = num2 会更容易,但是如果您使用一个input() 来获取两个值,那么您必须使用一个带有两个值的字符串,您必须将其转换为列表两个字符串。 IE。 num2 = num2.split(' ')teacher, subject = num2.split(' ') 然后 df["Teachers"].iloc[i] = teacher df["Subjects"].iloc[i] = subject`.
  • 您没有收到错误消息吗?总是把完整的错误信息(从“Trceback”这个词开始)放在有问题的地方(不是评论文本(ot screenshot)。还有其他有用的信息。

标签: java python excel pandas append


【解决方案1】:

我不知道您的档案中有什么 - 但如果您已经有行,那么对于单个教师和科目可能会简单得多

def teach_add():
    # read data from file
    df = pd.read_excel('bd1.xlsx', sheet_name='teachers')

    #print(df[['Teachers','Subjects']])
    
    # ask for data
    index  = int(input("Enter index: "))
    teacher = input("Enter teacher: ")
    subject = input("Enter subject: ")

    # add data to dataframe
    df['Teachers'][index] = teacher
    df['Subjects'][index] = subject

    # save data to file
    df.to_excel('bd1.xlsx', sheet_name='teachers')

这里是代码中包含一些数据的最小工作代码 - 所以每个人都可以简单地复制它并运行它来看看它是如何工作的

import pandas as pd

df = pd.DataFrame({
            'Class': ['A', 'B', 'C'], 
            'Teachers':['', '', ''], 
            'Subjects':['', '', ''], 
    })

#print(df[['Teachers','Subjects']])
print(df)

index   = 1
teacher = 'Albert Einstein'
subject = 'Physics'

df['Teachers'][index] = teacher
df['Subjects'][index] = subject

index   = 2
teacher = 'Alfred Nobel'
subject = 'Chemistry'

df['Teachers'][index] = teacher
df['Subjects'][index] = subject

#print(df[['Teachers','Subjects']])
print(df)

之前

  Class Teachers Subjects
0     A                  
1     B                  
2     C  

之后

  Class         Teachers   Subjects
0     A                            
1     B  Albert Einstein    Physics
2     C     Alfred Nobel  Chemistry

如果你想要求更多的老师,那么你应该使用for-loop。你可以问你要加多少老师

def teach_add():
    # read data from file
    df = pd.read_excel('bd1.xlsx', sheet_name='teachers')

    #print(df[['Teachers','Subjects']])
    
    # how many rows you have in dataframe
    teachers_number = int(input("How many teachers: "))

    # --- loop ---

    for _ in range(teachers_number):

        # ask for data
        index   = int(input("Enter index: "))
        teacher = input("Enter teacher: ")
        subject = input("Enter subject: ")

        # add data to dataframe
        df['Teachers'][index] = teacher
        df['Subjects'][index] = subject


    # --- after loop ---

    # save data to file
    df.to_excel('bd1.xlsx', sheet_name='teachers')

或者你可以得到你有多少空行并填充所有行而不要求索引。

def teach_add():
    # read data from file
    df = pd.read_excel('bd1.xlsx', sheet_name='teachers')

    #print(df[['Teachers','Subjects']])
    
    # how many rows you have in dataframe
    rows_number = len(df)

    # --- loop ---

    for index in range(rows_number):

        # ask for data
        teacher = input("Enter teacher: ")
        subject = input("Enter subject: ")

        # add data to dataframe
        df['Teachers'][index] = teacher
        df['Subjects'][index] = subject

    # --- after loop ---

    # save data to file
    df.to_excel('bd1.xlsx', sheet_name='teachers')

如果您在 DataFarme 中没有行并且您必须追加行,它可能还需要不同的代码。


编辑:

pandas 警告我它适用于数据副本,我必须使用

df.loc[index, 'Teachers'] = teacher
df.loc[index, 'Subjects'] = subject

而不是

df['Teachers'][index] = teacher
df['Subjects'][index] = subject

我还必须使用 read_excel(..., index=False)to_excel(..., index=False) 来跳过添加带索引的列。

【讨论】:

  • 一切都很酷,但文件中的其余工作表已消失
  • 我没有你的文件,我无法在你的数据上测试它,我必须猜测它如何处理你的数据,我只展示我会怎么做。如果您需要更好的帮助,那么您应该添加指向示例文件的链接。
  • 我做到了,,,,,,,,,,,,,,,
  • 如果您需要对代码进行更多更改,那么您甚至可以将其描述为(Answers)作为您问题的解决方案。
  • 顺便说一句:我创建了一些文件进行测试,它显示警告说它适用于复制 - 我不得不使用 df.loc[index, 'Teachers'] = teacherdf.loc[index, 'Subjects'] = subject 而不是 df['Teachers'][index] = teacherdf['Subjects'][index] = subject跨度>
猜你喜欢
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
相关资源
最近更新 更多