我想基于使用for循环的if语句条件追加整行。我的for循环仅附加了特定的列,而不附加所有它们。
我尝试给append添加两个参数,但由于它仅接受一个参数,因此无法正常工作。
android_clean = [] #lsit of new cleaned data
already_added = [] #list of the cleaned app names
for idx, row in android_data.iterrows():
name = row['App']
n_reviews = float(row['Reviews'])
if(reviews_max[name] == n_reviews)and (name not in already_added):
android_clean.append(name)
already_added.append(name) #make sure this inside the if block
len(android_clean)
一行包含7到8个不同的列。我的代码仅附加了应用名称。我需要附加包括所有列的整个行。
答案 0 :(得分:0)
附加行而不是行['App']。 该行是itterrows()中的整行。
android_clean = [] #lsit of new cleaned data
already_added = [] #list of the cleaned app names
for idx, row in android_data.iterrows():
name = row['App']
n_reviews = float(row['Reviews'])
if(reviews_max[name] == n_reviews)and (name not in already_added):
android_clean.append(row)
already_added.append(name) #make sure this inside the if block
len(android_clean)
答案 1 :(得分:0)
将android_clean.append(name)
替换为android_clean.append(row)
。
无for循环:我建议您不要使用iterrows
,而应该使用Pandas的内置函数来提高计算效率。
我假设reviews_max
是您代码中的字典,因为您使用名称作为键。这是两行代码,应该为您提供与for循环相同的结果。
max_reviews = android_data['App'].replace(reviews_max)
android_clean = android_data.loc[row['Reviews'].astype('float') == max_reviews]\
.drop_duplicates("App")