Bir veri çerçeve verisine sahibim ve sonunda bir tane daha eklemek istiyorum. Yeni dataframe bir öncekine benzer, sadece girişler değiştirildi. Aşağıdaki çalışır ve ne yaptığımı göstermektedir kodu vardır: Ben sonunda sadece ilk 5 satır ekliyorum Bu örnekteEski bir pandadan yeni pandalar oluşturma
listL = data.shape[0]
length = data.shape[1]
mid = (length-1)/2.0
for j in range(0, 5) :
data.loc[listL+j] = data.iloc[j]
for j in range(0, 5) :
for i in range(start, end) :
left = int(ceil(mid+i)) + 1
right = int(ceil(mid-i))
data.iloc[listL+j][left] = data.iloc[j][right]
data.iloc[listL+j][0] = data.iloc[j][0] + 10
ve sütunları takas. Bu hiç de iyi ölçeklenmez ve çok verimsizdir. Bunu daha verimli hale getirmenize, döngüyü ortadan kaldırmanıza ve iyi ölçeklendirmenize yardımcı olabilir misiniz (10000'lü girişleri olan veri tabanlarıyla çalışmak istiyorum). Özellikle, takas işlemini nasıl daha verimli hale getirebilirim?
Güncelleme: cevaplar birini kullanarak , şimdi yapabilirsiniz:
listL orijinal df verilerin satır sayısıdırtmpdf = data
data = pandas.concat([data, tmpdf])
for j in range(0, listL-1) :
for i in range(start, end) :
left = int(ceil(mid+i)) + 1
right = int(ceil(mid-i))
data.iloc[listL+j][left] = data.iloc[listL+j][right]
data.iloc[listL+j][0] = data.iloc[listL+j][0] + 10
. Eğer df1
ve df2
varsa
listL = data.shape[0]
length = data.shape[1]
mid = (length-1)/2.0
for j in range(0, listL-1) :
for i in range(start, end) :
left = int(ceil(mid+i)) + 1
right = int(ceil(mid-i))
data.iloc[listL+j][left] = data.iloc[listL+j][right]
data.iloc[listL+j][0] = data.iloc[listL+j][0] + 10
Örnek veri çerçeveleri ve istenen bir çıktı gönderir misiniz? Bu size yardım etmeyi kolaylaştıracak. Ikinci bölüm için –
sadece veri yapmak [data.columns [: mid] .tolist() + data.columns [(orta + 1):] tolist()] ' –
@JoeR Kod hepsi burada. Veri ver = [x, 1, 2, 3], yeni df = [[x, 1, 2, 3], [x + 10, 3,2,1]] oluşturmak istiyorum, yani iki katına çıkıyorum satırlar, ilk değer 10 artırılır, diğer her şey orta sütuna yansıtılır. – user