假設我有以下數據框:最佳方式給出的邊緣
a b
0 A 1.516733
1 A 0.035646
2 A -0.942834
3 B -0.157334
4 A 2.226809
5 A 0.768516
6 B -0.015162
7 A 0.710356
8 A 0.151429
,我需要它賦予了「邊B」組;這意味着這些組將是:
a b
0 A 1.516733
1 A 0.035646
2 A -0.942834
3 B -0.157334
4 A 2.226809
5 A 0.768516
6 B -0.015162
7 A 0.710356
8 A 0.151429
也就是說。任何時候我在列'a'中找到'B'我想分割我的DataFrame。
我目前的解決辦法是:
#create the dataframe
s = pd.Series(['A','A','A','B','A','A','B','A','A'])
ss = pd.Series(np.random.randn(9))
dff = pd.DataFrame({"a":s,"b":ss})
#my solution
count = 0
ls = []
for i in s:
if i=="A":
ls.append(count)
else:
ls.append(count)
count+=1
dff['grpb']=ls
和我得到的數據框:
a b grpb
0 A 1.516733 0
1 A 0.035646 0
2 A -0.942834 0
3 B -0.157334 0
4 A 2.226809 1
5 A 0.768516 1
6 B -0.015162 1
7 A 0.710356 2
8 A 0.151429 2
,我可以再與dff.groupby('grpb')
分裂。
有沒有一個更有效的方法來做到這一點使用熊貓功能?
使用iterrows()循環遍歷每一行;那麼你可以做任何你想做的事情。我認爲這種方法更加靈活。 –