我有一个名为句柄文本的函数,它可以重命名数据帧列中的值:
def handle_text(txt):
if txt.lower()[:6] == 'deu_ga':
return 'Western Europe', 'Germany'
elif txt.lower()[:6] == 'fra_ga':
return 'Western Europe', 'France'
return 'Other', 'Other'
我通过以下方式在各种数据帧上应用handle_text:
campaigns_df['Region'], campaigns_df['Market'] = zip(*campaigns_df['Campaign Name'].apply(handle_text))
atlas_df['Region'], atlas_df['Market'] = zip(*atlas_df['Campaign Name'].apply(handle_text))
flashtalking_df['Region'], flashtalking_df['Market'] = zip(*flashtalking_df['Campaign Name'].apply(handle_text))
我想知道是否有一种方法可以执行 for 循环以立即将函数应用于各种 dfs:
dataframes = [atlas_df, flashtalking_df, innovid_df, ias_viewability_df, ias_fraud_df]
columns_df = ['Campaign Name']
for df in dataframes:
for column in df.columns:
if column in columns_df:
zip(df.column.apply(handle_text))
但是我得到的错误是:
AttributeError: 'DataFrame' object has no attribute 'column'
最佳答案
我成功地解决了这个问题:
dataframes = [atlas_df, flashtalking_df, innovid_df, ias_viewability_df, ias_fraud_df, mediaplan_df]
columns_df = 'Campaign Name'
for df in dataframes:
df['Region'], df['Market'] = zip(*df[columns_df].apply(handle_text))
关于python - 使用 For 循环参数在 Pandas Dataframe 上应用 Zip 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973256/