【发布时间】:2020-05-18 11:16:03
【问题描述】:
我正在尝试根据条件创建一个新的 pandas 数据框。这是原始数据框:
topic1 topic2
name1 1 4
name2 4 4
name3 4 3
name4 4 4
name5 2 4
我想选择任意行,以便 topic1 == 4 在新数据框中出现 2 次,topic2 == 4 出现 3 次。一旦完成,我想停止代码。
bucket1_topic1 = 2
bucket1_topic2 = 3
我写了这个非常复杂的启动器,它“几乎”可以工作......但是我在处理同时满足 topic1 和 topic2 条件的行时遇到了问题。有什么更有效和正确的方法来做到这一点?
rows_list = []
counter1 = 0
counter2 = 0
for index,row in data.iterrows():
if counter1 < bucket1_topic1:
if row.topic1 == 4:
counter1 +=1
rows_list.append([row[1], row.topic1, row.topic2])
if counter2 < bucket1_topic2:
if row.topic2 == 4 and row.topic1 !=4:
counter2 +=1
if [row[1], row.topic1, row.topic2] not in rows_list:
rows_list.append([row[1], row.topic1, row.topic2])
想要的结果,topic1 == 4 出现两次,topic2 == 4 出现 3 次:
topic1 topic2
name1 1 4
name2 4 4
name3 4 3
name5 2 4
【问题讨论】:
-
您能否更清楚地描述一下条件,如果它们满足我的条件为 4桶有点混乱
-
做了一些更新,希望现在更清楚了!
标签: python pandas loops if-statement conditional-statements