2012-07-24 24 views
19

Pandalarda birleşmelerle ilgili sorunlar yaşıyorum ve neyin yanlış olduğunu anlamaya çalışıyorum. Ben Say bir dataframe x:Pandalar birleştirme/birleştirme/iki veri çerçevesine uydurma

<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 1941 entries, 2004-10-19 00:00:00 to 2012-07-23 00:00:00 
Data columns: 
close 1941 non-null values 
high  1941 non-null values 
low  1941 non-null values 
open  1941 non-null values 
dtypes: float64(4) 

Ben colnames hariç y = x + 2 sahip olduğu komutunu katılmak basit olan endeksi y ile katılmak mümkün olmalıdır.

<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 1941 entries, 2004-10-19 00:00:00 to 2012-07-23 00:00:00 
Data columns: 
close2 1941 non-null values 
high2  1941 non-null values 
low2  1941 non-null values 
open2  1941 non-null values 
dtypes: float64(4) 

y.join(x) or pandas.DataFrame.join(y,x): 
<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 34879 entries, 2004-12-16 00:00:00 to 2012-07-12 00:00:00 
Data columns: 
close2 34879 non-null values 
high2  34879 non-null values 
low2  34879 non-null values 
open2  34879 non-null values 
close  34879 non-null values 
high  34879 non-null values 
low  34879 non-null values 
open  34879 non-null values 
dtypes: float64(8) 

Sonunun her ikisi için de 1941 olmayan değerlere sahip olmasını bekliyorum. Birleştirmeyi de denedim ama aynı konuya sahibim.

Doğru cevabın pandas.concat olduğunu düşünmüştüm ([x, y]), fakat bu benim de niyet ettiğim şeyi yapmıyor.

In [83]: pandas.concat([x,y]) 
Out[83]: <class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 3882 entries, 2004-10-19 00:00:00 to 2012-07-23 00:00:00 
Data columns: 
close2 3882 non-null values 
high2 3882 non-null values 
low2 3882 non-null values 
open2 3882 non-null values 
dtypes: float64(4) 

düzenleme: katıldıktan ilgili sorunlar yaşıyorsanız aşağıda Wes'in cevabını okuyun. Yinelenen bir zaman damgası vardı.

cevap

20

İşaret çiftleri var mı x.index.is_unique: Size soran yaparsın görünüyor? Gördüğünüz davranışı açıklarsanız:

In [16]: left 
Out[16]: 
      a 
2000-01-01 1 
2000-01-01 1 
2000-01-01 1 
2000-01-02 2 
2000-01-02 2 
2000-01-02 2 

In [17]: right 
Out[17]: 
      b 
2000-01-01 3 
2000-01-01 3 
2000-01-01 3 
2000-01-02 4 
2000-01-02 4 
2000-01-02 4 

In [18]: left.join(right) 
Out[18]: 
      a b 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-01 1 3 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
2000-01-02 2 4 
+0

Teşekkürler, buydu. gerçekten onu takdir ederim –

14

Belki pandas.concat istiyorsun gibi geliyor? merge ve join, iki girdinin Kartezyen ürününe dayanan bir şey verecekleri anlamına gelir, yani, onları sadece büyük bir masaya yapıştırmak istediğiniz gibi geliyor.

Düzenleme: axis=1 ile concat denedin mi?

>>> print x 
      A   B   C 
0 0.155614 -0.252148 0.861163 
1 0.973517 1.156465 -0.458846 
2 2.504356 -0.356371 -0.737842 
3 0.012994 1.785123 0.161667 
4 0.574578 0.123689 0.017598 
>>> print y 
     A2  B2  C2 
0 -0.280993 1.278750 -0.704449 
1 0.140282 1.955322 -0.953826 
2 0.581997 -0.239829 2.227069 
3 -0.876146 -1.955199 -0.155030 
4 -0.518593 -2.630978 0.333264 
>>> print pandas.concat([x, y], axis=1) 
      A   B   C  A2  B2  C2 
0 0.155614 -0.252148 0.861163 -0.280993 1.278750 -0.704449 
1 0.973517 1.156465 -0.458846 0.140282 1.955322 -0.953826 
2 2.504356 -0.356371 -0.737842 0.581997 -0.239829 2.227069 
3 0.012994 1.785123 0.161667 -0.876146 -1.955199 -0.155030 
4 0.574578 0.123689 0.017598 -0.518593 -2.630978 0.333264 
+0

Teşekkürler, üzgünüm. Ben de pandas.concat denedim bahsetmeliydim. Burada –

+0

concat göründüğünü gibi: pandas.concat ([x, y]) Out [83]: DatetimeIndex: 3882 [83] yılında girişler, 2004-10-19 00:00:00 - 2012-07-23 00:00:00 Veri sütunları: close2 3882 null olmayan değerler high2 3882 non-null değerleri low2 3882 non-null değerleri open2 3882 null olmayan değerler dtypes: float64 (4) –

+0

Yapıştırılan çıktı yorumlarda iyi görünmüyor. Verilerinizin ne olduğuna ve çıktının ne olmasını istediğinize dair bir örnek göstermek için sorunuzu düzenleyebilir misiniz? – BrenBarn

İlgili konular