繁体   English   中英

迭代 Pandas Dataframe 中的行,保持前 2 行固定

[英]Iterate over Rows in Pandas Dataframe keeping first 2 Rows Fixed

DataFrame

我有一个 DataFrame 如上所示。有什么方法可以创建一个新的 dataframe 每次具有行索引[0,1,2], [0,1,3],[0,1,4]意味着保留第一个dataframe 的 2 行固定(在本例中为索引 0 和 1)并包括固定行中的下一行。

Output 应该具有 DataFrame 行[0,1,2], [0,1,3],[0,1,4]等在 ZA7F5F35426B927411739231B5638 中。

你可以这样做:

import pandas as pd

df = pd.DataFrame({'A': ['AA','BB','CC','DD','EE'], 'B': ['AA', 'AA', 'BB','BB','BB'], 'C': ['CC', 'CC', 'DD', 'DD', 'DD']})

def make_new_df(row_to_keep, orig_df):
    new_df=pd.DataFrame(columns=list(orig_df))
    new_df.loc[0]=orig_df.loc[0]
    new_df.loc[1]=orig_df.loc[1]
    new_df.loc[2]=orig_df.loc[row_to_keep]
    return new_df

使用要保留作为参数的行索引以及要从中获取行的原始 dataframe 调用 new_df 的位置。

从评论中清除,除了前两行之外,您还希望每行都有一个新的dataframe ,请执行以下操作:

new_df_dict = {}
for i in range(2, len(df)):
    new_df_dict[i] = df.iloc[[0, 1, i], :]

之后,您将在new_df_dict中拥有所有新dataframes的字典,因为字典的键是新行的编号。

您可以使用重新索引:

df1=df.reindex[0,1,2]
df2=df.reindex[0,1,3]
etc.

如果要使用切片:

df10=df.reindex( np.r_[0,1,10:len(df)] )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM