如何使用for循环为熊猫数据框附加整行

时间:2019-09-02 04:25:41

标签: python-3.x pandas for-loop data-cleaning

我想基于使用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个不同的列。我的代码仅附加了应用名称。我需要附加包括所有列的整个行。

2 个答案:

答案 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")
相关问题