我如何 merge/sum 将 pandas DataFrame 中的一系列行合并为一行?
How can I merge/sum together a range of rows in a pandas DataFrame into one row?
我有一个 pandas DataFrame,我正在尝试将最后几行相加并合并为一行。有没有一种方法可以指定一个索引范围并将该范围的行相加并合并到所有列的一行中?
谢谢
是的,您应该能够指定一个索引范围并将该范围的行相加并合并到所有列中的一行:
start_row = 18
df.iloc[start_row] = df.iloc[start_row:].sum()
df = df.iloc[:start_row+1]
试试这个:我假设您的数据只有两列(计数和百分比):
df.reset_index().replace({'index':[i for i in range(18,24)]}, {'index':18}).groupby('index', as_index=False).sum()
您可以将 pandas.DataFrame.groupby
与 lambda 函数一起使用:
start = 18
df = df.groupby(lambda x: x if x < start else start).sum()
我有一个 pandas DataFrame,我正在尝试将最后几行相加并合并为一行。有没有一种方法可以指定一个索引范围并将该范围的行相加并合并到所有列的一行中?
谢谢
是的,您应该能够指定一个索引范围并将该范围的行相加并合并到所有列中的一行:
start_row = 18
df.iloc[start_row] = df.iloc[start_row:].sum()
df = df.iloc[:start_row+1]
试试这个:我假设您的数据只有两列(计数和百分比):
df.reset_index().replace({'index':[i for i in range(18,24)]}, {'index':18}).groupby('index', as_index=False).sum()
您可以将 pandas.DataFrame.groupby
与 lambda 函数一起使用:
start = 18
df = df.groupby(lambda x: x if x < start else start).sum()