熊猫将一行的值分为两行

时间:2020-09-08 17:35:35

标签: python pandas dataframe

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

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:]

但是,如果我想保留更大的数据帧或对多个实例进行操作,这似乎效率很低。有什么想法如何分割一行的值并将分割后的值添加到该行的上方和下方?

1 个答案:

答案 0 :(得分: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))