0
我已經從sql server中提取了一些熊貓格式的數據。像這樣的結構:熊貓:批量替換來自不同行的值符合相同條件
df = pd.DataFrame({'Day':(1,2,3,4,1,2,3,4),'State':('A','A','A','A','B','B','B','B'),'Direction':('N','S','N','S','N','S','N','S'),'values':(12,34,22,37,14,16,23,43)})
>>> df
Day Direction State values
0 1 N A 12
1 2 S A 34
2 3 N A 22
3 4 S A 37
4 1 N B 14
5 2 S B 16
6 3 N B 23
7 4 S B 43
現在我想(A國==)本身來代替與同一天同一個方向,但所有值+值與同一天,同一個國家,但與(國家==乙)。例如,像這樣:
df.loc[(df.Day == 1) & (df.Direction == 'N') & (df.State == 'A'),'values'] = df.loc[(df.Day == 1) & (df.Direction == 'N') & (df.State == 'A'),'values'].values + df.loc[(df.Day == 1) & (df.Direction == 'N') & (df.State == 'B'),'values'].values
>>> df
Day Direction State values
0 1 N A 26
1 2 S A 34
2 3 N A 22
3 4 S A 37
4 1 N B 14
5 2 S B 16
6 3 N B 23
7 4 S B 43
通知的第一行的值已經從12變更爲26(12 + 14) 由於值是來自不同的行,所以種難以使用combine_first功能?
現在我必須使用兩個循環(在'日'和'方向')和上述歸因語句來做,當數據幀變大時它非常緩慢。你有這樣做的聰明和有效的方式嗎?
哦,groupby和apply:可愛的funcs隊友。作爲一個新手,他們總能感覺棒極了,但仍需要更多的培訓來掌握他們。很多謝謝,夥計 – lkonweb
不用擔心。如果您覺得有用,請接受答案。 – Allen