是否基于行值将行插入Pandas数据帧?

2024-06-02 05:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

df = pd.DataFrame({'B':[2,1,2],'C':['a','b','a']})
  B C
0 2 'a'
1 1 'b'
2 2 'a'

我想在任何出现的'b'上面插入一行,这是该行的副本,但是'b'更改为'c',因此我以以下方式结束:

^{pr2}$

我一辈子都不知道该怎么做。在


Tags: 数据dataframedf方式副本pdpr2
2条回答

在NumPy级别工作,这里有一个向量化方法-

arr = df.values
idx = np.flatnonzero(df.C=='b')
newvals = arr[idx]
newvals[:,df.columns.get_loc("C")] = 'c'
out = np.insert(arr,idx+1,newvals,axis=0)
df_index = np.insert(np.arange(arr.shape[0]),idx+1,idx,axis=0)
df_out = pd.DataFrame(out,index=df_index)

样本运行-

^{pr2}$

有一种方法:

duplicates = df[df['C'] == 'b'].copy()
duplicates['C'] = 'c'
df.append(duplicates).sort_index()

相关问题 更多 >