我正在尝试使用以下代码从两个单独的熊猫数据框中提取内容:
def get_content(df):
content=[]
for index, row in df.iterrows():
content.append(row.content)
return content
contents=[news,blog]
dfs=[news_df,blogs_df]
for df, content in zip(dfs,contents):
content=get_content(df)
print(len(content)) # gives me correct values
print(len(blog),len(news)) # empty lists.
但是重写代码可以给我正确的结果:
def get_content(df):
for index,row in df.iterrows():
content.append(row.content)
return content
news=[]
blog=[]
contents=[news,blog]
dfs=[news_df,blogs_df]
for df, content in zip(dfs,contents):
content=get_content(df)
print(len(content)) # gives me correct values
print(len(blog),len(news)) # gives me correct results
我不明白为什么第二个代码有效,而第一个无效。
答案 0 :(得分:0)
它们没有改变,因为df
和content
是副本,而不是原始数据(内存中的不同位置)。
为此替换您的:
for index in range(len(contents)):
contents[index] = get_content(dfs[index])
print(len(contents[index])) # gives me correct values
它现在应该起作用而不是循环的原因是因为我正在直接处理列表中的值,而不是它们的副本。