Python 将行追加到数据帧

Python 将行追加到数据帧,python,pandas,Python,Pandas,我被一项简单的任务困住了。我想创建一个空数据框,并根据另一个数据集的查询向其追加行。我试过这里的答案,但我遗漏了一些东西。初学者蟒蛇。任何帮助都将不胜感激。我想获取每个状态的前3行,并将它们添加到一个新的数据框中进行处理。我也试着附加 def test(): #获取州的列表 states_df=census_df.STNAME.unique() 总体_df=pd.DataFrame() 对于州内的st_df: temp_df=pd.DataFrame(普查[census_df['STNAME']

我被一项简单的任务困住了。我想创建一个空数据框,并根据另一个数据集的查询向其追加行。我试过这里的答案,但我遗漏了一些东西。初学者蟒蛇。任何帮助都将不胜感激。我想获取每个状态的前3行,并将它们添加到一个新的数据框中进行处理。我也试着附加

def test():
#获取州的列表
states_df=census_df.STNAME.unique()
总体_df=pd.DataFrame()
对于州内的st_df:
temp_df=pd.DataFrame(普查[census_df['STNAME']==st].nlargest(3,'CENSUS2010POP'))
pd.concat([temp_df,population_df],ignore_index=True)
返回1

欢迎来到SO!您的问题是追加还是前三行

对于append,请尝试函数。它可能看起来像:

#get the list of states
states_df = census_df.STNAME.unique()
population_df = pd.DataFrame()

for st in states_df:
    temp_df = pd.DataFrame(census_df[census_df['STNAME'] == st].nlargest(3,'CENSUS2010POP'))
    population_df = population_df.append(temp_df, ignore_index = True) #append the temp df to your main df, ignoring the index
对于最上面的行,您可以使用df.sort_值(按=['column name'],升序=False),然后选择最上面的三行:

population_df = population_df.append(temp_df[0:3], ignore_index = True)

我想我知道你在做什么,一年前我玩得很开心,坚持下去

我发现连接一组切片数据帧的最简单/最快的方法是将每个df附加到一个列表,然后在最后连接该列表。请参阅下面的工作代码(它实现了我对您的理解)

我同意David关于排序的建议,更容易使用排序,然后只需将前3个部分切片。正如nlargest()工作并返回一个系列,我相信不是一个数据帧,而您希望保留整个数据帧结构(所有列)以进行连接

为什么函数返回1?打字错误我想如果你把它放在一个函数中,你会想要返回你想要的输出,所以我也改变了

import pandas as pd
import numpy as np


#create fake data random numbers
data = np.random.randint(2,11,(40,3))
census_df = pd.DataFrame(index=range(40), columns=['Blah', 'Blah2','CENSUS2010POP'], data=data)
#create fake STNAME column
census_df['STNAME'] = list('aaaabbbbccccddddeeeeffffgggghhhhiiiijjjj')

#Function:
def test(census_df):
    states_list = census_df.STNAME.unique() #changed naming to _list as it's not a df.
    list_of_dfs = list() #more efficient to append each df to a list
    for st in states_list:
        temp_df = census_df[census_df['STNAME']==st]
        temp_df = temp_df.sort_values(by=['CENSUS2010POP'], ascending=False).iloc[:3]
        list_of_dfs.append(temp_df)
    population_df = pd.concat(list_of_dfs,ignore_index=True)
    return population_df

population_df = test(census_df)

@当然是我的名字!这是Coursera五门课程中的第一门课程。对于像我这样的初学者来说,这是非常艰难和苛刻的,但同样值得。我只上了前3门课,但即使到了最后,我也已经完成了一些有监督的机器学习活动。@Declan-非常感谢。是的,我正在努力完成专业课程1!毫无疑问,你会经常在这里见到我。返回1只是为了不妨碍我,我正在使用print语句进行调试。