Yanıtlar:
Bunu concat
yapmanın güzel bir yolu olduğunu düşünüyorum . Varsa, Sütun olarak Dizinin ad özniteliklerini kullanır (aksi takdirde bunları numaralandırır):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
Not: Bu, 2 Seriden fazlasını kapsar.
pd.concat([list_of_dataframes])
new_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
Her ikisi de aynı dizinlere sahipse neden sadece .to_frame kullanmıyorsunuz?
> = v0.23
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
Pandalar seri olarak geçirilenleri otomatik olarak hizalayacak ve ortak indeksi oluşturacaklar Burada aynı oluyorlar. reset_index
dizini bir sütuna taşır.
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
Örnek kod:
a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})
Pandalar, DataFrame
a dict
ile Series
değerleri ve sütun adlarını anahtarlar olarak oluşturmanızı sağlar. Series
Değer olarak a bulduğunda , Series
dizinin bir parçası olarak dizini kullanır DataFrame
. Bu veri hizalaması Pandaların ana avantajlarından biridir. Sonuç olarak, başka ihtiyaçlarınız olmadıkça, yeni oluşturulan DataFrame
değer yinelenir. Yukarıdaki örnekte, data['idx_col']
ile aynı verilere sahiptir data.index
.
Eğer buna cevap verebilirsem.
Serileri veri çerçevesine dönüştürmenin arkasındaki temel hususlar
1. Kavramsal düzeyde, veri çerçevesindeki her sütun bir seridir.
2. Ve her sütun adı, bir seriyle eşleşen anahtar addır.
İki kavramı aklınızda tutarsanız, seriyi veri çerçevesine dönüştürmenin birçok yolunu düşünebilirsiniz. Kolay bir çözüm şöyle olacaktır:
Burada iki seri oluşturun
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
Yalnızca istenen sütun adlarıyla boş bir veri çerçevesi oluşturun
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
Eşleme konseptini kullanarak seri değerini veri çerçevesinin içine yerleştirin
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
Sonuçları şimdi kontrol edin
df.head(5)
Sorunuzu tam olarak anladığımdan emin değilim, ama yapmak istediğiniz şey bu mu?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
( index=s1.index
burada bile gerekli değildir)
Aşağıdakilere dayanan çözümün basitleştirilmesi join()
:
df = a.to_frame().join(b)
Ben benim numpy dizi veya iseries bir veri çerçevesine dönüştürmek için pandalar kullandım ve ek olarak ek anahtar sütun 'tahmin' olarak ekledi. Bir listeye dönüştürülen veri çerçevesine ihtiyacınız varsa, değerler.tolist () kullanın
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()