在函数的参数中调用数据框列名

calling a dataframe column name in the parameters of a function

我有一个包含 8 列的数据框,我想 运行 下面的代码(我测试它在单个列上工作)作为对所有 8 列的 map/apply 的函数。 click here for sample of dataframe

all_adj_noun = []
for i in range(len(bigram_df)):
    if len([bigram_df['adj_noun'][i]]) >= 1:
        for j in range(len(bigram_df['adj_noun'][i])):
            all_adj_noun.append(bigram_df['adj_noun'][i][j])

但是,当我尝试定义函数时,代码 returns 一个空列表,但它不为空。

def combine_bigrams(df_name, col_name):
    all_bigrams = []
    for i in range(len(df_name)):
        if len([df_name[col_name][i]]) >= 1:
            for j in range(len(df_name[col_name][i])):
                return all_bigrams.append(df_name[col_name][i][j])

我通过

调用函数
combine_bigrams(bigram_df, 'adj_noun')

我可以知道我在这里做错了什么吗?

问题是您正在 returning .append 的结果,即 None

但是,有更好(更快)的方法可以做到这一点。要 return 列中包含所有值的列表,您可以利用 Series.agg:

col_name = 'adj_noun'
all_bigrams = bigram_df[col_name].agg(sum)