2015-07-29 29 views
5

İki seri oluşturuldu: s1 ve s2, df.Eşleşmeyen dizinlere sahip iki panda dizisi

Her birinin aynı uzunluğu ancak farklı dizinleri vardır. s1.multiply(s2), bunlara karşı çarpmak yerine uyumsuz indisleri birleştirir.

Yalnızca eşleşmeyen indeksleri yok sayaraknumaralı s2 numarasına karşı giriş yapmak istiyorum.

ve s2.reset_index() çalıştırabilir ve sonra bu iki dfs'den istediğim sütunu alabilirim, çünkü özgün dizini ayrı bir sütuna dönüştürür, ancak bu sıkıcı ve bunu yapmanın daha basit bir yolu olabileceğini düşündüm.

s1.multiply(s2, axis='columns') 

Ben reset_index() ile devam düşünüyoruz ya

+0

hangi olacak bir numpy diziye dönüştürebilirsiniz bu hat bir indeks problem çözme olduğunu çok açık bir şekilde anlatıyor iken

dizini 'değerler':' s1.values.mul (s2.values) 'ile yoksayın. – JohnE

+0

Teşekkürler John, bu gerçekten serinin değerlerini çoğaltmak için çalışıyor. Ne yazık ki, diziyi numpy dizisine dönüştürüyor. Tüm süreci seriyi kullanarak dizilmiş dizilere geçmek yerine seriyi kullanmaya devam etmenin bir yolunu biliyor musunuz ve sonra seriye dönüyoruz (sonuç = pandas.Series (s1.values ​​* s2.values))? – intdt

+0

's1 * s2.values' çalışmalıdır – EdChum

cevap

1

çalışmak görünmüyor yoldur, ama, dizini bırakın dataframe geri itin değil bir seçenek yoktur.

Bunun gibi

:

s1 = pd.Series([1,2,3,4,5,6,7], index=[52,34,3,53,636,7,4]) 
52  1 
34  2 
3  3 
53  4 
636 5 
7  6 
4  7 
dtype: int64 

s1.reset_index(drop=True) 
0 1 
1 2 
2 3 
3 4 
4 5 
5 6 
6 7 
dtype: int64 

Ben sadece değerler

s1 * s2.values 

ile çarpılması ile diğer önerilen yaklaşımın önce reset_index() yaklaşımı tercih sebebi bu çok açık olmamasıdır. Bu çizgi bana çözdüğünüz bir indeks problemi olduğunu söylemiyor.

s1.reset_index(drop=True) * s2.reset_index(drop=True) 

Veya birden fazla satır onu yıkmak:

s1.reset_index(inplace=True, drop=True) 
s2.reset_index(inplace=True, drop=True) 
s1 * s2 
İlgili konular