[英]Iterate over Rows in Pandas Dataframe keeping first 2 Rows Fixed
我有一个 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.