【发布时间】:2021-07-16 14:54:10
【问题描述】:
所以,我在下面有以下数据,我想遍历数据框并执行一些函数,最后将函数的结果保存在列表中。我无法创建列表。我只在列表中得到一个值,而不是我打算得到的两种方法。谁有更有效的方法来解决这个问题,请分享。
dict = {'PassengerId' : [0.0, 0.001, 0.002, 0.003, 0.004, 0.006, 0.007, 0.008, 0.009, 0.01],
'Survived' : [0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0],
'Pclass' : [1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.5],
'Age' : [0.271, 0.472, 0.321, 0.435, 0.435, np.nan, 0.673, 0.02, 0.334, 0.171],
'SibSp' : [0.125, 0.125, 0.0, 0.125, 0.0, 0.0, 0.0, 0.375, 0.0, 0.125],
'Parch' : [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.167, 0.333, 0.0],
'Fare' : [0.014, 0.139, 0.015, 0.104, 0.016, 0.017, 0.101, 0.041, 0.022, 0.059]}
import pandas as pd
dicts = pd.DataFrame(dicts, columns = dicts.keys())
def Mean(self):
list_mean = []
list_all = []
for i, row in dicts.iterrows():
if (row['Age'] > 0.2) & (row['Fare'] < 0.1):
list_all.append(row['PassengerId'])
elif (row['Age'] > 0.2) & (row['Fare'] > 0.1):
list_all.clear()
list_all.append(row['PassengerId'])
return list_mean.append(np.mean(list_all))
Mean()
请帮忙!!
【问题讨论】:
-
如果我正确理解了这个问题,那么您只会得到列表中的项目,那是因为一旦满足数据框中第一个值的 if 条件,您就会返回。我相信您应该返回最终值,即在 for 循环完成时返回。
-
@SomuSinhhaa 感谢您的回复,但是我能够解决问题,我现在有一个新的挑战,您能帮我检查一下吗?我已经修改了代码。
-
对不起,我仍然看到你的旧代码,你试图在 if 块中返回。您应该按照答案之一中所述返回,即仅在您将所有列表元素存储在 list_mean 之后,即在完成 for 循环之后。此外,如果您有其他问题,我建议您打开一个新线程。
-
@SomuSinhhaa 我已经编辑了它,你现在可以检查它。
-
请您详细说明这一行。它不是很清楚“我只在列表中获得一个值,而不是我打算获得的两个手段”我猜但不确定您是否要附加到列表中,以防您的任何一个条件匹配然后在这种情况下你必须使用逻辑或来组合这两个条件而不是 if elif
标签: python function loops class dictionary