基本上我有我们的人口普查数据,我从一个csv文件中读到了熊猫。 现在我要写一个函数,从csv文件中得到的表中,以一种特定的方式查找县(不解释这一点,因为这不是问题所在),然后返回这些县。在
我的尝试:
我所做的是用列的名称创建列表(函数必须返回这些列),然后在for循环中应用特定条件,使用if语句读取它们各自列表中所有必需列的条目。现在我创建了一个新的数据帧,我想把列表中的条目读入这个新的数据帧中。我尝试了同样的for循环来完成它,但都是徒劳的,尝试从这些列表中生成序列,并尝试将它们作为数据帧中的参数传递,仍然是徒劳的,从这些列表中生成数据帧,并尝试使用append()函数来连接它们,但仍然是徒劳的。任何帮助都将不胜感激。在
代码:
#idxl = list()
#st = list()
#cty = list()
idx2 = 0
cty_reg = pd.DataFrame(columns = ('STNAME', 'CTYNAME'))
for idx in range(census_df['CTYNAME'].count()):
if((census_df.iloc[idx]['REGION'] == 1 or census_df.iloc[idx]['REGION'] == 2) and (census_df.iloc[idx]['POPESTIMATE2015'] > census_df.iloc[idx]['POPESTIMATE2014']) and census_df.loc[idx]['CTYNAME'].startswith('Washington')):
#idxl.append(census_df.index[idx])
#st.append(census_df.iloc[idx]['STNAME'])
#cty.append(census_df.iloc[idx]['CTYNAME'])
cty_reg.index[idx2] = census_df.index[idx]
cty_reg.iloc[idxl2]['STNAME'] = census_df.iloc[idx]['STNAME']
cty_reg.iloc[idxl2]['CTYNAME'] = census_df.iloc[idx]['CTYNAME']
idx2 = idx2 + 1
cty_reg
人口普查表图片:
示例表:
^{pr2}$样本输出:
STNAME CTYNAME
0 Wisconsin Washington County
1 Alabama Washington County
我很抱歉对美国的州和县了解较少,我只是随机地把州名和县放在样本表中,只是想告诉你我想从中得到什么。谢谢你的帮助。在
假设您选择的是某种满足条件的行,假设}。我不能推断它是什么,因为你特别说它不重要
select(row)
,如果被选中,这个函数返回True
,否则返回{然后你想要那一行的STNAME和CTYNAME。在
所以你可以这样做:
如果您编写了
select
函数来选择行,那么这是一个将得到您想要的结果的行。在如果我正确地阅读了您代码中的逻辑,您需要根据以下条件选择行:
REGION
应该是1
或{POPESTIMATE2015
>;POPESTIMATE2014
CTYNAME
需要以"Washington"
开头一般来说,Pandas可以方便地根据条件选择行,而不必迭代数据帧:
在操作中发布的源数据框中有一些列丢失。但是,读取循环我认为根本不需要循环。需要3个筛选器-
REGION
、POPESTIMATE2015
和CTYNAME
。如果我已经理解了操作中的逻辑,那么在没有循环的情况下这应该是可行的选项1-原始答案
选项2-使用
^{pr2}$and
和pd.eval
选项3-使用
^{3}$and
和df.query
相关问题 更多 >
编程相关推荐