根据DataFrame中的其他列值修改前n行中的列

时间:2018-04-04 04:11:46

标签: python pandas

我想根据DataFrame中的其他列值修改前n行中的列。像这样:

df.loc[(df.A == i), 'B'][0:10] = 100

它不起作用。
我也尝试过的事情就是先排样n行:

(df.sample(10)).loc[(df.A == i), 'B'] = 100

但它返回了ValueError: cannot reindex from a duplicate axis

2 个答案:

答案 0 :(得分:2)

我只能想出这个

fakePromise.promise.mockImplementation((params, callback) => callback(null, {Items:[1,2,3]}))

对于df.loc[(df.A==i)&(df.index.isin(df.iloc[:10,:].index)),'B']=100 ,这将有效

sample

github

的讨论为基础

你永远不应该进行这种类型的链式就地设置。这只是不好的做法。

PS:s=(df.sample(10)) s.loc[(df.A == i), 'B'] = 100 这是链接到位设置

答案 1 :(得分:2)

您可以像这样使用locimport pandas as pd import numpy as np df = pd.DataFrame({'A':np.arange(100),'B':[1]*100}) df.loc[df[(df.A % 2 == 0)].head(10).index,'B'] = 100 print(df.head(25))

     A    B
0    0  100
1    1    1
2    2  100
3    3    1
4    4  100
5    5    1
6    6  100
7    7    1
8    8  100
9    9    1
10  10  100
11  11    1
12  12  100
13  13    1
14  14  100
15  15    1
16  16  100
17  17    1
18  18  100
19  19    1
20  20    1
21  21    1
22  22    1
23  23    1
24  24    1

输出:

{{1}}