2017-03-31 109 views
1

我有一個非常簡單的for循環:有關大熊貓據幀環路濾波器不工作

## Keep or Drop Rows from Ad Servers 

dataframes = [atlas_df, flashtalking_df, innovid_df, ias_viewability_df, ias_fraud_df] 

for df in dataframes: 
    df = df[df['Placement Name'].str.contains("»")] 

當我運行for循環,雖然,沒有過濾器。

但是,如果我手動把它寫下來爲:

ias_fraud_df = ias_fraud_df[ias_fraud_df['Placement Name'].str.contains("»")] 

過濾器的工作原理。

關於我失蹤的任何想法?

+0

我做的DF線的簡單計數測試。 例如。當我將for循環應用於'ias_fraud_df'並執行'ias_fraud_df.count()'時,行數是相同的。 如果我手動應用它,那麼行數將更改爲正確的數字。 –

回答

2

你在迭代器工作時,你需要使用一個索引列表,引用原始DF:

for i in range(len(dataframes)): 
    df = dataframes[i]  
    dataframes[i] = df[df['Placement Name'].str.contains("»")] 

這所以在列表中的原始DF被修改

例:

In [108]: 
l = list('abcd') 
for i in range(len(l)): 
    l[i] = 'new_' + l[i] 

Out[108]: 
['new_a', 'new_b', 'new_c', 'new_d'] 

對戰:

In [110]: 
l = list('abcd') 
for x in l: 
    x = 'new_' + x 
l 

Out[110]: 
['a', 'b', 'c', 'd'] 

所以你看,這是語義上與您的代碼後從未修改列表中的原始元素,而另一種則

+0

我剛剛測試了您提供的示例,並且它完美地工作。但是,當我將這些代碼應用於我的確切示例時,它仍然不會過濾 –

+0

然後,您可能會遇到一些數據完整性問題,除非您發佈原始數據和代碼,否則這些問題無法複製。我會在你的循環中測試你的過濾過程實際上產生了一個df – EdChum

+0

我仔細檢查過,所以它完美地工作,但是新的數據框,而不是被稱爲,例如, 'ias_viewability_df',必須被調用爲'dataframes [3]'。 有沒有辦法自動將'dataframe [3]'重命名爲'ias_viewability_df'?因此,將所有剩餘的'dfs'匹配到它們的'dataframes'列表中? –

1

您可以使用列表理解 - 輸出濾波Dataframes的名單:

dataframes = [df[df['Placement Name'].str.contains(u"»")] for df in dataframes] 

樣品:

atlas_df = pd.DataFrame({'Placement Name':['deu_gathf»', 'deu_gahf', 'fra_gagg'], 
         'another_col':[1,2,3]}) 
flashtalking_df = pd.DataFrame({'Placement Name':['deu_gahf»','fra_ga', 'deu_gatt'], 
         'another_col':[4,5,6]}) 

dataframes = [atlas_df, flashtalking_df] 
print (dataframes) 
[ Placement Name another_col 
0  deu_gathf»   1 
1  deu_gahf   2 
2  fra_gagg   3, Placement Name another_col 
0  deu_gahf»   4 
1   fra_ga   5 
2  deu_gatt   6] 

dataframes = [df[df['Placement Name'].str.contains(u"»")] for df in dataframes] 
print (dataframes) 
[ Placement Name another_col 
0  deu_gathf»   1, Placement Name another_col 
0  deu_gahf»   4] 
+0

誰是尋找規範答案的人? – piRSquared