Pandada sütunların adını dəyişin

Mənim pandam və sütun yazıları istifadə edən bir DataFrame var, mənə orijinal sütun etiketlərini əvəz etmək üçün düzəliş etməliyəm.

Sütun adlarını, orijinal sütun adlarının olduğu DataFrame A'da dəyişdirmək istərdim:

 ['$a', '$b', '$c', '$d', '$e'] 

in

 ['a', 'b', 'c', 'd', 'e']. 

Siyahıda saxlanılan sütun adlarını düzəldirdim, ancaq sütun adlarının dəyişdirilməsini bilmirəm.

1258
05 июля '12 в 17:21 2012-07-05 17:21 İstifadəçi1504276 05 iyul 'da saat 17:21' də təyin olunub 2012-07-05 17:21
@ 30 cavab

Yalnız .columns xüsusiyyətinə atayın:

 >>> df = pd.DataFrame({'$a':[1,2], '$b': [10,20]}) >>> df.columns = ['a', 'b'] >>> df ab 0 1 10 1 2 20 
1303
05 июля '12 в 17:23 2012-07-05 17:23 Cavab 05 iyul 2012- ci il saat 17 : 38-eumiro tərəfindən verilir . 2012-07-05 17:23

df.rename() funksiyasından istifadə edin və adını dəyişmək istədiyiniz sütunları baxın. Bütün sütunların adı dəyişdirilməməlidir:

border=0
 df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}) # Or rename the existing DataFrame (rather than creating a copy) df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True) 
2097
06 июля '12 в 4:48 2012-07-06 04:48 cavab 06 iyul 2012-ci il tarixdə 4:48 tarixində verilmişdir. 2012-07-06 04:48

rename metodu bir funksiyaya malik ola bilər, məsələn:

 In [11]: df.columns Out[11]: Index([u'$a', u'$b', u'$c', u'$d', u'$e'], dtype=object) In [12]: df.rename(columns=lambda x: x[1:], inplace=True) In [13]: df.columns Out[13]: Index([u'a', u'b', u'c', u'd', u'e'], dtype=object) 
325
21 мая '13 в 12:58 2013-05-21 12:58 Cavab 21 may 2013-cü il saat 12: 56-da Andy Hayden tərəfindən verilir
142
30 мая '15 в 16:24 2015-05-30 16:24 Cavab kadee tərəfindən mayın 30-da saat 16: 04-da verilir

Pandas 0. 21+ Cavab ver

Versiya 0.21-də adını dəyişdirmək üçün bəzi əhəmiyyətli yeniliklər var.

  • rename metodu, columns və ya columns ayarlanabilen bir axis parametresini əlavə etdi. Bu yeniləmə bu metodun qalan panda API'sı ilə uyğun gəlir. indexcolumns variantları hələ də var, lakin siz artıq istifadə etməyiniz tələb olunur.
  • set_axis metodu, inplace dəyərinə inplace bütün index və ya sütun etiketlərini siyahıya dəyişməyə imkan verir.

Pandalar üçün nümunələr 0. 21 +

Nümunə DataFrame yaradın:

 df = pd.DataFrame({'$a':[1,2], '$b': [3,4], '$c':[5,6], '$d':[7,8], '$e':[9,10]}) $a $b $c $d $e 0 1 3 5 7 9 1 2 4 6 8 10 

Yenidən rename axis='columns' və ya axis=1

 df.rename({'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}, axis='columns') 

və ya

 df.rename({'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}, axis=1) 

Hər ikisi də aşağıdakı nəticələrə səbəb olur:

  abcde 0 1 3 5 7 9 1 2 4 6 8 10 

Köhnə metodun imzasını da istifadə edə bilərsiniz:

 df.rename(columns={'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}) 

rename funksiyası da hər sütun adına tətbiq ediləcək funksiyaları qəbul edir.

 df.rename(lambda x: x[1:], axis='columns') 

və ya

 df.rename(lambda x: x[1:], axis=1) 

Bir list ilə inplace=Falseinplace=False

Siz uzunluğu sütunların (ya da indeksin) sayına bərabər olan set_axis metoduna bir siyahısını təqdim edə bilərsiniz. Hal-hazırda, inplace default olaraq True , lakin inplace gələcək versiyalarında default olaraq False olacaq.

 df.set_axis(['a', 'b', 'c', 'd', 'e'], axis='columns', inplace=False) 

və ya

 df.set_axis(['a', 'b', 'c', 'd', 'e'], axis=1, inplace=False) 

Niyə df.columns = ['a', 'b', 'c', 'd', 'e'] etməyin?

Sütunları birbaşa təyin etməklə yanlış bir şey yoxdur. Bu tamamilə yaxşı bir qərar.

set_axis istifadə üstünlüyü, bu bir üsul zəncirinin bir hissəsi kimi istifadə edilə və DataFrame-in yeni bir surətini qaytarmasıdır. Bu olmadan, sütunların təkrarlanmasından əvvəl başqa bir dəyişəndə ​​aralıq zəncir addımlarını saxlamaq lazımdır.

 # new for pandas 0.21+ df.some_method1() .some_method2() .set_axis() .some_method3() # old way df1 = df.some_method1() .some_method2() df1.columns = columns df1.some_method3() 
124
24 окт. Cavab Ted Petrou 24 oct verilir . 2017-10-24 16:39 '17 də 4:39 2017-10-24 16:39

Bütün sütun adlarında $ işarəsini silmək istədiyinizdən bəri sadəcə:

 df = df.rename(columns=lambda x: x.replace('$', '')) 

Və ya

 df.rename(columns=lambda x: x.replace('$', ''), inplace=True) 
121
26 марта '14 в 13:20 2014-03-26 13:20 Cavab verilir paulo.filip3 26 mart '14 13:20 2014-03-26 13:20
 df.columns = ['a', 'b', 'c', 'd', 'e'] 

Mövcud adları sizin təqdim etdiyiniz adlarla göstərdiyiniz qaydada əvəz edəcəkdir.

71
22 марта '16 в 11:59 2016-03-22 11:59 Cavab MA PAUL'ta 22 Mart 'da 11:59' də 2016-03-22 11:59 ' ye verilir
 old_names = ['$a', '$b', '$c', '$d', '$e'] new_names = ['a', 'b', 'c', 'd', 'e'] df.rename(columns=dict(zip(old_names, new_names)), inplace=True) 

Beləliklə, new_names əl ilə düzəldə bilərsiniz. Səhv adları düzəltmək, vurğulamaq, xüsusi simvolları silmək üçün bir neçə sütunun adını dəyişdirmək lazımdır.

55
21 мая '15 в 20:48 2015-05-21 20:48 cavab miglooya verilir 21, '15 saat 20:48 2015-05-21 20:48

Hesab edirəm ki, bu metod faydalıdır:

 df.rename(columns={"old_column_name1":"new_column_name1", "old_column_name2":"new_column_name2"}) 

Bu üsul sütun adlarını ayrı-ayrılıqda dəyişməyə imkan verir.

44
17 марта '18 в 12:13 2018-03-17 12:13 cavab 17 mart 18: 00-da saat 12 : 13-də 2018-03-17 12:13 wolfog verilir

Sütun adları və serial adları

Mən səhnələrin arxasında nə baş verdiyini bir az izah etmək istərdim.

Dataframlar bir sıra kolleksiyasıdır.

Satırlar alternativ olaraq numpy.array

numpy.array malikdir numpy.array

Bu seriyanın adıdır. Pandaların bu xüsusiyyətə hörmət etməsi nadirdir, lakin yerlərdə qalıb və pandaların davranışını pozmaq üçün istifadə edilə bilər.

Sütun siyahısını adlandırma

Burada bir çox cavablar, bir list olan df.columns xüsusiyyətindən danışır, əslində bir Series . Bu, .name xüsusiyyətinə malikdir.

Series sütun adlarını doldurmağa qərar verdiyiniz təqdirdə nə baş verir?

 df.columns = ['column_one', 'column_two'] df.columns.names = ['name of the list of columns'] df.index.names = ['name of the index'] name of the list of columns column_one column_two name of the index 0 4 1 1 5 2 2 6 3 

Qeyd edək ki, indeks adı hər zaman bir sütun aşağıda gəlir.

Yalançı əsərlər

.name atributu bəzən təxirə .name . df.columns = ['one', 'two'] df.one.name , df.one.name 'one' .

Əgər df.one.name = 'three' təyin df.one.name = 'three' , df.columns hələ də ['one', 'two'] df.one.name verəcəkdir və df.one.name 'three'

BUT

pd.DataFrame(df.one) qayıdır

  three 0 1 1 2 2 3 

Çünki pandalar yenidən təyin edilmiş Series .name yenidən istifadə edir.

Çox səviyyəli sütun adları

Pandaların çox səviyyəli sütun adları yaratma yolları var. Çox az iştirak edir, amma mənim cavabımda onu vurğulamaq istərdim, çünki burada heç kimə toplanmır.

  |one | |one |two | 0 | 4 | 1 | 1 | 5 | 2 | 2 | 6 | 3 | 

Bu asanlıqla sütunları siyahıya qoymaqla əldə edilir, məsələn:

 df.columns = [['one', 'one'], ['one', 'two']] 
33
29 сент. Cavab firelynx 29 sep verilir . 2016-09-29 15:30 '16 saat 15:30 'də 2016-09-29 15:30' a qədər

Tək xətt və boru xətlərinin həlli

Mən iki şeyə diqqət edəcəyəm:

  • OP açıq-aşkar deyir

    Siyahıda saxlanılan sütun adlarını düzəldirdim, ancaq sütun adlarının dəyişdirilməsini bilmirəm.

    '$' Əvəzləmə problemini həll etmək istəmirəm və hər bir sütun başlığından ilk xarakterimi kəsmək istəmirəm. OP artıq bu addımı atdı. Bunun əvəzində, mövcud columns obyektini əvəz olunacaq columns adlarının siyahısını göstərərək yeni bir ilə əvəz etmək istərdim.

  • df.columns = new olduğu sütunlar üçün adların siyahısı olduğu qədər df.columns = new olduğu kimi new . Bu yanaşmanın mənfi cəhətidir ki, mövcud dataframe columns xüsusiyyətlərini düzəltməyi tələb edir və inline tətbiq edilmir. Mövcud bir məlumat çərçivəsini düzəltmədən boru verməklə bunu etmək üçün bir neçə yol göstərəcəyəm.


Quraşdırma 1
Əvəzlənmiş sütunların adlarını mövcud siyahıya dəyişmək lazım olduğuna diqqət yetirmək üçün ilk sütun adları və əlaqəli olmayan yeni sütun adları ilə yeni bir nümunə dataframe df yaradır.

 df = pd.DataFrame({'Jack': [1, 2], 'Mahesh': [3, 4], 'Xin': [5, 6]}) new = ['x098', 'y765', 'z432'] df Jack Mahesh Xin 0 1 3 5 1 2 4 6 

Həll 1
pd.DataFrame.rename

Daha əvvəl deyildi ki, köhnə sütunların adlarını yeni sütunların adları ilə pd.DataFrame.rename varsa, pd.DataFrame.rename istifadə edə bilərsiniz.

 d = {'Jack': 'x098', 'Mahesh': 'y765', 'Xin': 'z432'} df.rename(columns=d) x098 y765 z432 0 1 3 5 1 2 4 6 

Ancaq, bu lüğəti asanlıqla yaratmaq və onu rename zənginə əlavə edə bilərsiniz. df vasitəsilə df hər bir sütun adını yineleyerek aşağıdakıları istifadə edir.

 # given just a list of new column names df.rename(columns=dict(zip(df, new))) x098 y765 z432 0 1 3 5 1 2 4 6 

Orijinal sütun adları unikaldırsa, bu böyükdür. Ancaq əgər olmasa, o zaman pozulur.


Quraşdırma 2
qeyri-nadir sütunlar

 df = pd.DataFrame( [[1, 3, 5], [2, 4, 6]], columns=['Mahesh', 'Mahesh', 'Xin'] ) new = ['x098', 'y765', 'z432'] df Mahesh Mahesh Xin 0 1 3 5 1 2 4 6 

Həll 2
pd.concat keys arqumenti ilə

Birincisi, həlli istifadə etməyə çalışdığımızda nə baş verdiyini bir daha bildirin:

 df.rename(columns=dict(zip(df, new))) y765 y765 z432 0 1 3 5 1 2 4 6 

new siyahı sütun adları ilə əlaqələndiririk. y765 təkrarladıq. Bunun əvəzinə, biz df sütunları yineleyerek, pd.concat funksiyasının keys arqumentini istifadə edə bilərik.

 pd.concat([c for _, c in df.items()], axis=1, keys=new) x098 y765 z432 0 1 3 5 1 2 4 6 

Həll 3
Yenidən qurul. Bütün sütunlar üçün bir dtype varsa, bu istifadə edilməlidir. Əks halda, bütün sütunlar üçün dtype object əldə dtype və onları çevirmək dtype daha çox iş tələb edir.

Tək dtype

 pd.DataFrame(df.values, df.index, new) x098 y765 z432 0 1 3 5 1 2 4 6 

Qarışıq dtype

 pd.DataFrame(df.values, df.index, new).astype(dict(zip(new, df.dtypes))) x098 y765 z432 0 1 3 5 1 2 4 6 

Həll 4
Bu transposeset_index ilə hiyləgər bir oyun. pd.DataFrame.set_index sıra təyin etməyə imkan verir, lakin müvafiq set_columns yoxdur. Beləliklə, biz transpose, sonra set_index və geri set_index bilər. Bununla belə, eyni bir dtype həll 3-dən qarışıq dtype qarşı burada istifadə olunur.

Tək dtype

 df.T.set_index(np.asarray(new)).T x098 y765 z432 0 1 3 5 1 2 4 6 

Qarışıq dtype

 df.T.set_index(np.asarray(new)).T.astype(dict(zip(new, df.dtypes))) x098 y765 z432 0 1 3 5 1 2 4 6 

Həll 5
Hər elementdən new keçən pd.DataFrame.rename lambda istifadə edin
Bu həlldə biz x'yi götürən lambdanı atlayırıq amma sonra onu məhəl qoymuruq. O da qəbul edir, lakin gözləmir. Bunun əvəzinə yineleyicisi default olaraq təyin olunur və mən x asılı olmayaraq, bir-birinə keçmək üçün istifadə edə bilərəm.

 df.rename(columns=lambda x, y=iter(new): next(y)) x098 y765 z432 0 1 3 5 1 2 4 6 

Və sopython söhbətində qeyd edildiyi kimi, xy arasında * əlavə edərsəm, mən y dəyişənliyini qoruyuram. Baxmayaraq ki, bu baxımdan müdafiə ehtiyacına malik olduğunu düşünmürəm. Hələ də xatırlatmaq lazımdır.

 df.rename(columns=lambda x, *, y=iter(new): next(y)) x098 y765 z432 0 1 3 5 1 2 4 6 
31
13 сент. Cavab piswquared Sep 13 2017-09-13 11:09 '17 at 11:09 2017-09-13 11:09

DataFrame - df.rename () işləyəcək.

 df.rename(columns = {'Old Name':'New Name'}) 

df sizin malik olduğunuz DataFrame və Köhnə adı dəyişdirmək istədiyiniz sütunun adıdır, sonra yeni ad dəyişdiyiniz yeni ad. Bu daxili DataFrame metodu işi asanlaşdırır.

20
13 окт. Cavab 13 oktyabr çiçək tərəfindən verilir . 2017-10-13 23:37 '17 saat 11:37 'da 2017-10-13 23:37' də
 df = pd.DataFrame({'$a': [1], '$b': [1], '$c': [1], '$d': [1], '$e': [1]}) 

Yeni sütun siyahınız mövcud sütunlarla eyni qaydada olarsa, tapşırıq sadədir:

 new_cols = ['a', 'b', 'c', 'd', 'e'] df.columns = new_cols >>> df abcde 0 1 1 1 1 1 

Yeni sütunların adları olan köhnə sütunların əsas adları olan bir lüğət varsa, aşağıdakıları edə bilərsiniz:

 d = {'$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'} df.columns = df.columns.map(lambda col: d[col]) # Or `.map(d.get)` as pointed out by @PiRSquared. >>> df abcde 0 1 1 1 1 1 

Bir siyahı və ya söz eşlemeiniz yoxdursa, siyahı anlayaraq aparıcı $ karakterini ləğv edə bilərsiniz:

 df.columns = [col[1:] if col[0] == '$' else col for col in df] 
16
14 февр. Aleksandr tərəfindən 14 Fevralda verilən cavab 2016-02-14 03:31 '16 'da saat 15:31' də 2016-02-14 03:31 'də

Bir dataframe varsa, df.columns hər şeyi bir siyahıya salır, siz manipulyasiya edə və sonra sütun adları kimi çərçivəyə yenidən təyin edə bilərsiniz ...

 columns = df.columns columns = [row.replace("$","") for row in columns] df.rename(columns=dict(zip(columns, things)), inplace=True) df.head() #to validate the output 

Ən yaxşı yol? IDK. Yol bəli.

Aşağıdakı suallara verilən cavablarda təklif olunan bütün əsas metodları cProfile-dən yaddaş və işləmə müddətini ölçmək üçün qiymətləndirmək yaxşıdır. @kadee, @ kaitlyn və @ eumiro ən sürətli icra zamanı ilə işlədilər, baxmayaraq ki, bu funksiyalar belə tezdir ki, hər bir cavab üçün .000 və .001 saniyədə yuvarlaqlaşdırma ilə müqayisə edək. Mənəvi: Yuxarıdakı cavabım yəqin ki, "Ən yaxşı" yol deyil.

 import pandas as pd import cProfile, pstats, re old_names = ['$a', '$b', '$c', '$d', '$e'] new_names = ['a', 'b', 'c', 'd', 'e'] col_dict = {'$a': 'a', '$b': 'b','$c':'c','$d':'d','$e':'e'} df = pd.DataFrame({'$a':[1,2], '$b': [10,20],'$c':['bleep','blorp'],'$d':[1,2],'$e':['texa$','']}) df.head() def eumiro(df,nn): df.columns = nn #This direct renaming approach is duplicated in methodology in several other answers: return df def lexual1(df): return df.rename(columns=col_dict) def lexual2(df,col_dict): return df.rename(columns=col_dict, inplace=True) def Panda_Master_Hayden(df): return df.rename(columns=lambda x: x[1:], inplace=True) def paulo1(df): return df.rename(columns=lambda x: x.replace('$', '')) def paulo2(df): return df.rename(columns=lambda x: x.replace('$', ''), inplace=True) def migloo(df,on,nn): return df.rename(columns=dict(zip(on, nn)), inplace=True) def kadee(df): return df.columns.str.replace('$','') def awo(df): columns = df.columns columns = [row.replace("$","") for row in columns] return df.rename(columns=dict(zip(columns, '')), inplace=True) def kaitlyn(df): df.columns = [col.strip('$') for col in df.columns] return df print 'eumiro' cProfile.run('eumiro(df,new_names)') print 'lexual1' cProfile.run('lexual1(df)') print 'lexual2' cProfile.run('lexual2(df,col_dict)') print 'andy hayden' cProfile.run('Panda_Master_Hayden(df)') print 'paulo1' cProfile.run('paulo1(df)') print 'paulo2' cProfile.run('paulo2(df)') print 'migloo' cProfile.run('migloo(df,old_names,new_names)') print 'kadee' cProfile.run('kadee(df)') print 'awo' cProfile.run('awo(df)') print 'kaitlyn' cProfile.run('kaitlyn(df)') 
15
01 сент. cavab verildi 01 avqust . 2015-09-01 05:24 '15 at 05:24 AM 2015-09-01 05:24
14
19 июля '18 в 7:50 2018-07-19 07:50 Cavab Yog 19 iyul, 18 saat 7:50 , 2018-07-19 07:50 verilir

df = df.rename(columns=lambda n: n.replace('$', '')) bu problemi həll etmək üçün funksional bir yoldur.

13
24 февр. Cavab lf2225 24 fevralda verilir. 2018-02-24 00:47 '18 'də 0:47 2018-02-24 00:47

Orijinal sütun etiketlərinin əvəz edilməsinin başqa bir üsulu, əsl sütun etiketlərindən lazımsız simvolları (burada '$') silməkdir.

Bu df.columns vasitəsilə loop üçün çalışan və split sütunları df.columns əlavə etməklə həyata keçirilə bilər.

Bunun əvəzinə, aşağıda göstərildiyi kimi, bu bir səliqə ilə, bir fikirdə istifadə edə bilərik:

 df.columns = [col.strip('$') for col in df.columns] 

(Python'daki strip metodu xəttin başlanğıcından və sonundan verilmiş xarakterləri aradan qaldırır.)

11
23 нояб. Cavab yazılır 23 noyabr. 2015-11-23 16:56 '15 at 4:56 pm 2015-11-23 16:56

Bilirəm ki, bu sual və cavab çeynəyirdi. Amma mən bu problemlərdən biri üçün ilham üçün dedim. Buna uyğun olaraq bit və parçaları müxtəlif cavablardan istifadə edərək həll edə bildim, buna görə də kimsə cavab verməlidir.

Mənim metod ümumidir, bu da sizdə delimiters= dəyişən və onun gələcək qorunmasını ayıraraq virgüllə əlavə məhdudlaşdırıcılar əlavə edə bilərsiniz.

İş kodu:

 import pandas as pd import re df = pd.DataFrame({'$a':[1,2], '$b': [3,4],'$c':[5,6], '$d': [7,8], '$e': [9,10]}) delimiters = '$' matchPattern = '|'.join(map(re.escape, delimiters)) df.columns = [re.split(matchPattern, i)[1] for i in df.columns ] 

Nəticə:

 >>> df $a $b $c $d $e 0 1 3 5 7 9 1 2 4 6 8 10 >>> df abcde 0 1 3 5 7 9 1 2 4 6 8 10 
10
04 авг. Cavab Anil_M 04 aug tərəfindən verilir . 2016-08-04 23:26 '16 saat 11:26 'da 2016-08-04 23:26

str.slice üçün str.slice istifadə edə bilərsiniz:

 df.columns = df.columns.str.slice(1) 
9
28 янв. Anton Protopopovun 28 yanvarda cavabı 2016-01-28 20:31 '16 saat 20:31 'də 2016-01-28 20:31

Real sadə istifadə

 df.columns = ['Name1', 'Name2', 'Name3'...] 

sütun adlarını qoyduğunuz qaydada təyin edəcəyik

9
29 нояб. Thodoris P tərəfindən verilmiş cavab 29 noyabr. 2015-11-29 22:22 '15 at 10:22 pm 2015-11-29 22:22

Bu yanaşmanın MultiIndex üçün işləməyəcəyini unutmayın. MultiIndex üçün aşağıdakı kimi bir şey etmək lazımdır:

 >>> df = pd.DataFrame({('$a','$x'):[1,2], ('$b','$y'): [3,4], ('e','f'):[5,6]}) >>> df $a $be $x $yf 0 1 3 5 1 2 4 6 >>> rename = {('$a','$x'):('a','x'), ('$b','$y'):('b','y')} >>> df.columns = pandas.MultiIndex.from_tuples([ rename.get(item, item) for item in df.columns.tolist()]) >>> df abe xyf 0 1 3 5 1 2 4 6 
7
30 авг. Cavab oxer verilir 30 aug. 2016-08-30 00:27 '16 'da 0:27 2016-08-30 00:27

Veri sütunlarını yeniden adlandırın ve biçimini dəyişdirin

 import pandas as pd data = {'year':[2015,2011,2007,2003,1999,1996,1992,1987,1983,1979,1975], 'team':['Australia','India','Australia','Australia','Australia','Sri Lanka','Pakistan','Australia','India','West Indies','West Indies'], } df = pd.DataFrame(data) #Rename Columns df.rename(columns={'year':'Years of Win','team':'Winning Team'}, inplace=True) #Replace format df = df.columns.str.replace(' ', '_') 
7
18 мая '18 в 12:02 2018-05-18 12:02 Sankar guruuna 18 May 18: 18-da cavab verib, 2018-05-18 12:02

Məlumat çərçivəsini oxuduqda sütunları yenidən adlandırın:

 >>> df = pd.DataFrame({'$a': [1], '$b': [1], '$c': [1]}).rename(columns = {'$a' : 'a','$b':'b','$c':'c'}) Out[1]: abc 0 1 1 1 
5
29 сент. Cavab verilir DataBender 29 Sentyabr. 2018-09-29 11:38 '18 saat 11:38 'də 2018-09-29 11:38' də

Başqa bir seçim normal ifadədən istifadə etməklə yenidən adlandırmaqdır:

 import pandas as pd import re df = pd.DataFrame({'$a':[1,2], '$b':[3,4], '$c':[5,6]}) df = df.rename(columns=lambda x: re.sub('\$','',x)) >>> df abc 0 1 3 5 1 2 4 6 
5
07 июля '18 в 5:07 2018-07-07 05:07 Cavab sbha 07.07.2007 tarixində 5:07 2018-07-07 05:07 tarixində verilir

Əgər nəzarəti vermək sistemi olaraq adlandırılan bir çox sütunla məşğul olmağınız varsa, bir anda ümumi yanaşma və spesifik replikaların birləşməsi olan aşağıdakı yanaşmaya gəlmişəm.

Birincisi, sütun adlarının müəyyən tətbiqlərini ləğv etmək üçün normal ifadə ifadələrindən istifadə edərək dataframe sütun adlarından bir lüğət yaradır və sonra ana sütunları gözləniləndən sonra ana verilənlər bazasında yerləşdirmək üçün lüğətə müəyyən dəyişikliklər əlavə edirəm.

Daha sonra bir dəfə məlumat çərçivəsinə tətbiq edilir.

 dict=dict(zip(df.columns,df.columns.str.replace('(:S$|:C1$|:L$|:D$|\.Serial:L$)',''))) dict['brand_timeseries:C1']='BTS' dict['respid:L']='RespID' dict['country:C1']='CountryID dict['pim1:D']='pim_actual' df.rename(columns=dict, inplace=True) 
4
16 июня '17 в 11:27 2017-06-16 11:27 cavab matthhias tərəfindən verilir 16 iyun '17 11:27 2017-06-06 11:27

Bunu sınayın. Mənə uyğun

 df.rename(index=str, columns={"$a": "a", "$b": "b", "$c" : "c", "$d" : "d", "$e" : "e"}) 
3
09 февр. Cavab Nodar Okroshiaşviliyə verilib 09 fevral. 2018-02-09 10:28 '18 'də saat 10.28' də 2018-02-09 10:28 'də

Satır adlarına df.columns = ['a', 'b',index=False]

3
02 нояб. cavab Domnick 02 noyabr. 2017-11-02 08:17 '17 saat 08:17 'da 2017-11-02 08:17

Yazılarınızı azaltmaq üçün istifadə etmək istərdim ki, zərif bir az funksiyadır:

 def rename(data, oldnames, newname): if type(oldnames) == str: #input can be a string or list of strings oldnames = [oldnames] #when renaming multiple columns newname = [newname] #make sure you pass the corresponding list of new names i = 0 for name in oldnames: oldvar = [c for c in data.columns if name in c] if len(oldvar) == 0: raise ValueError("Sorry, couldn't find that column in the dataset") if len(oldvar) > 1: #doesn't have to be an exact match print("Found multiple columns that matched " + str(name) + " :") for c in oldvar: print(str(oldvar.index(c)) + ": " + str(c)) ind = input('please enter the index of the column you would like to rename: ') oldvar = oldvar[int(ind)] if len(oldvar) == 1: oldvar = oldvar[0] data = data.rename(columns = {oldvar : newname[i]}) i += 1 return data 

İşdə necə bir nümunədir:

 In [2]: df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=['col1','col2','omg','idk']) #first list = existing variables #second list = new names for those variables In [3]: df = rename(df, ['col','omg'],['first','ohmy']) Found multiple columns that matched col : 0: col1 1: col2 please enter the index of the column you would like to rename: 0 In [4]: df.columns Out[5]: Index(['first', 'col2', 'ohmy', 'idk'], dtype='object') 
2
19 апр. Cavab seeiespi 19 aprel. 2018-04-19 10:48 '18 saat 10:48 'da 2018-04-19 10:48' da

yalnız this.it istifadə sütun adı dəyişəcək

 df.columns = ['a', 'b', 'c', 'd', 'e'] 
0
15 нояб. Cavab Akash Nayak 15 noyabrda verilir. 2017-11-15 12:29 '17 saat 12:29 'də 2017-11-15 12:29

3 asan yol görürəm.

df.columns

çıxış: ['$ a', '$ b', '$ c', '$ d', '$ e']

1.

df.columns = ['a', 'b', 'c', 'd', 'e']

2

df.columns = df.columns.str.replace('$','')

3

df.rename(columns={'$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}, inplace=True)

0
22 янв. Cavab Nursnaz Jan 22 verilir 2019-01-22 11:18 '19, saat 11:18 'də 2019-01-22 11:18

Tags haqqında digər suallar və ya bir sual