如果对pandas.series进行声明,并将结果附加到列表中

时间:2018-09-11 11:22:45

标签: python pandas

我正在尝试建立一些由结果组成的列表。你能告诉我为什么这个结果是空的吗?

我不是用numpy寻找解决方案,这就是为什么我最初会创建> 50个列表,然后将其保存为CSV的原因。

ERROR: Caused by: com.sun.org.apache.xpath.internal.domapi.XPathStylesheetDOM3Exception: Prefix must resolve to a namespace: SQLTask

2 个答案:

答案 0 :(得分:2)

您的表达式df1['Region']=='America'给出了一个布尔布尔掩码(docs on boolean indexing)。布尔掩码是SeriesTrue的熊猫False,其索引与df1的索引对齐。

一旦习惯了布尔索引,就很容易获得期望值:

df1[df1['Region']=='America']
  Country     Capital   Region
0     USA  Washington  America

如果您有兴趣保留整行,请不要手动创建python列表;与坚持大熊猫相比,这会使您的工作变得极为复杂。您可以将行存储在新的DataFrame中:

# Use df.copy() here so that changing America won't change df1
America = df1[df1['Region']=='America'].copy()

为什么if (df1['Region']=='America').all():不起作用

Series.all()方法检查Series中的 all 值是否为True。您需要在这里检查每个行中是否存在条件df1 ['Region'] =='America',并仅保留符合该条件的那些行(如果我正确理解您的话)。

答案 1 :(得分:0)

我不确定您想要什么。 如果您想将整个数据框添加到列表中(如果“ America”位于区域中):

for region in df1.Region :
    if region == 'America':
        America.append(df1)

如果您要添加每个列表中的元素,而该列表的索引与“区域”列表中“美国”的索引相同:

count = 0
for region in df1.Region :
    if region == 'America':
        America.append(df1.Country[count])
        America.append(df1.Capital[count])
    count += 1

这能回答问题吗?