python - 使用 For 循环参数在 Pandas Dataframe 上应用 Zip 函数

标签 python pandas for-loop dataframe

我有一个名为句柄文本的函数,它可以重命名数据帧列中的值:

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/

相关文章:

javascript - 在for循环中选择项目

java - 带有改变大小的数组列表的双 for 循环

python - 没有循环 Python 的数字根

python - 使用 Python 重新组装以 'message/partial' 编码的电子邮件消息

python - (Root) 两个 pandas.Series 的均方误差

pandas - 与Excel类似,右移单元格

python - 在 Python 中从中文到 Latin1 的字符编码

python - 如何获得项目的计数字典但保持它们出现的顺序?

python - 如何通过使用将参数保留在同一列中的第一个和最后一个来删除 pandas df 列中的重复值

python - 为什么这个Python函数在for循环中运行时跳过索引1到3而不迭代索引2