【发布时间】:2020-09-14 03:30:22
【问题描述】:
我只是想问问社区,看看有没有更有效的方法。
我在一个数据框中有几行,我正在使用 .loc 过滤 A 行中的值,因为我可以对 B 行执行计算。
我可以轻松地做类似...
filter_1 = df.loc['Condition'] = 1
然后对我需要的 B 行进行数学计算。
但是我必须经历很多条件,所以我想知道是否可以列出条件,然后用更少的代码行通过 .loc 函数迭代它们?
如果我创建一个列表,然后通过循环迭代条件,这样的事情会起作用吗?
谢谢!
这个例子得到了我想要的大部分。在这个例子中,我只需要它显示 6.4 和 7.0。我该如何操作迭代,因为它会显示“a”行中唯一值的结果?
import pandas as pd
a = [1,2,1,2,1,2,1,2,1,2]
b = [5,1,3,5,7,20,9,5,8,4]
col = ['a', 'b']
list_1 = []
for i, j in zip(a,b):
list_1.append([i,j])
df1 = pd.DataFrame(list_1, columns= col)
for i in a:
aa = df1[df1['a'].isin([i])]
aa1 = aa['b'].mean()
print (aa1)
【问题讨论】:
-
请解释清楚。哪种情况?
-
过滤行 A 以获取 1 到 10 之间的值现在可以工作。我只需要查看范围内的每个值并在 B 行上执行计算。一个简单的计算,例如平均值或标准偏差。我正在根据我必须在 A 行上过滤的许多条件对 B 行进行简单的统计分析。