【发布时间】:2021-09-05 01:43:55
【问题描述】:
我有以下数据框:
id questionCode answer difficulty
1 3t4 False 0
2 3t4 True 0
3 3t5 False 0
4 3t6 True 0
5 3t4 False 0
我希望根据问题被正确或错误回答的频率将难度更改一分。难度已经为 0(即非常容易),并且问题一直被回答正确,它不能低于 0。
所以在这种情况下,输出将是:
id questionCode answer difficulty
1 3t4 False 1
2 3t4 True 1
3 3t5 False 1
4 3t6 True 0
5 3t4 False 1
这是因为3t4 一次正确回答两次错误,3t5 一次错误回答,3t6 一次正确回答。虽然不是很优雅,但是一旦代码完成,“最终难度结果”就会出现在每一行。
我的做法:
import pandas as pd
testing = [[1,'3t4', False, 0],[2,'3t4', True, 0],[3,'3t5', False, 0], [4,'3t6', True, 0], [5,'3t4', False, 0]]
df_testing = pd.DataFrame(testing,columns=['id', 'questionCode', 'answer', 'difficulty'])
print (df_testing)
df_testing_update = df_testing.questionCode.map({'3t4':1, '3t5':1, '3t6':-1})
df_testing.difficulty = (df_testing.difficulty + df_testing_update).clip(lower=0)
df_testing_update
输出:
id questionCode answer difficulty
0 1 3t4 False 0
1 2 3t4 True 0
2 3 3t5 False 0
3 4 3t6 True 0
4 5 3t4 False 0
0 1
1 1
2 1
3 -1
4 1
问题:
- 当我的数据集很大时,如何扩展它?
- 还有其他方法吗,比如遍历行和嵌套 if ?
【问题讨论】:
-
Is there any other approach, something like iterating over the rows and nesting if's?如果使用这种方法,则解决方案非常慢。因此无法在庞大的数据集中进行扩展。 -
我认为解决方案很好,在庞大的数据集中非常好
-
@jezrael 谢谢。我只是不知道如何将其转换为更大的数据集。这可能是微不足道的,但我无法弄清楚语法。
-
这个问题不适合SO,移到code review
标签: python pandas dataframe loops scalability