在函数的参数中调用数据框列名
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)
我有一个包含 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)