gpt4 book ai didi

pandas - 如何在多个 DataFrame 中删除行?

转载 作者:行者123 更新时间:2023-12-02 01:06:01 25 4
gpt4 key购买 nike

我有多个 DataFrame,每个 DataFrame 都有一个名为“Year”的列,每个列都包含从 1979 年到 2014 年的行。我希望能够遍历我的 DataFrame 列表并对每个 DataFrame 应用相同的选择标准并且只保留行的一个子集。

我的示例数据框:

df1 = pd.DataFrame({"Year": np.arange(1979,2015)})
df2 = pd.DataFrame({"Year": np.arange(1979,2015)})

我的循环:

for df in [df1, df2]:
df = df[(df['Year'] <= 2013)]

不过,该代码不会删除 DataFrame 的最后一行。 df1.tail()具有原始 DataFrames 具有的所有行。

不过,这是可行的:

foo1 = df1[(df1['Year'] <= 2013)]
foo2 = df2[(df2['Year'] <= 2013)]

我有太多的 DataFrame 需要循环,所以我不想逐个 DataFrame 进行循环,我真的很想让它在一个循环中工作。

任何帮助将不胜感激!谢谢。

最佳答案

您需要将输出分配给列表,因为无法修改原始DataFrame:

dfs = []
for df in [df1, df2]:
dfs.append(df[(df['Year'] <= 2013)])

或者使用列表理解:

dfs = [df[(df['Year'] <= 2013)] for df in [df1, df2]]

如果想要 DataFrames 字典 是可能的,请使用 zip:

names = ['a','b'] 
dfs = dict(zip(names, [df[(df['Year'] <= 2013)] for df in [df1, df2]]))
print (dfs['a'])

关于pandas - 如何在多个 DataFrame 中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47497873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com