繁体   English   中英

Pandas 将一行的值拆分为两个不同的行

[英]Pandas split values of a row into two different rows

我有一个包含三行的数据框。 我想从中间行中取出一半并将其添加到顶部和底部。 下面的示例数据框:

data = {'A':  [3, 2, 4],
        'B': [3, 5, 4]}

df = pd.DataFrame(data, columns = ['A','B'])

从这个数据框中,我如何能够将第二行(A:2,B:5)拆分为其他行,以便输出

data_output = {'A':  [4, 5],
        'B': [5.5, 6.5]}

df_output = pd.DataFrame(data_output, columns = ['A','B'])

我目前的想法是将行除以 2 添加到其他行追加和子集。

x = df.loc[0, ] + df.loc[1, ]/2
y = df.loc[2, ] + df.loc[1, ]/2

df2 = df.append([x, y], ignore_index=True)
df2.loc[3:]

但是,如果我想保留更大的数据帧或在多个实例上操作,这似乎效率低下。 任何想法如何拆分行的值并将拆分值添加到其上方和下方的行?

如果此操作在单行上,您可以尝试此操作:

row = 1 #index
df.update(df.loc[[row-1,row+1]].add(df.loc[row].div(2)))
out = df.drop(row).reset_index(drop=True)

print(out)

     A    B
0  4.0  5.5
1  5.0  6.5

或者对于副本而不是操作原始 df:

row = 1
(df.loc[[row-1,row+1]].add(df.loc[row].div(2)).reindex(df.index)
                   .fillna(df).drop(row).reset_index(drop=True))

暂无
暂无

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

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