作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有多个 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/
我是一名优秀的程序员,十分优秀!