我有一个如下所示的数据框,我想添加另一个要复制的列,直到满足某些条件为止。
sample_df = pd.DataFrame(data={
'id': ['A', 'B', 'C'],
'n' : [ 1, 2, 3],
'v' : [ 10, 13, 8],
'z' : [5, 3, 6],
'g' : [8, 8, 10]
})
additional_rows=
现在,我想添加另一列,其中包含有关数据框的其他信息。例如,我要复制Yes
直到id
为B
为止,并且要复制B
和Yes
以下的C
到{{ 1}},从D
到D
E
。
我期望的输出如下:
Maybe
如何在python中实现这一目标?
答案 0 :(得分:1)
您可以使用np.select
根据条件返回结果。由于您在谈论位置条件,因此我使用了df.index
:
sample_df = pd.DataFrame(data={
'id': ['A', 'B', 'C','G','D','E'],
'n' : [ 1, 2, 3, 5, 5, 9],
'v' : [ 10, 13, 8, 8, 4 , 3],
'z' : [5, 3, 6, 9, 9, 8]
})
sample_df['New Info'] = np.select([sample_df.index<2, sample_df.index<4],['Yes', 'No'], 'Maybe')
sample_df
Out[1]:
id n v z New Info
0 A 1 10 5 Yes
1 B 2 13 3 Yes
2 C 3 8 6 No
3 G 5 8 9 No
4 D 5 4 9 Maybe
5 E 9 3 8 Maybe