Soru Pandas DataFrame'i CSV'ye yazarken indeksi 1'de başlatın


Bir Pandas DataFrame'i CSV'ye yazarken 0'dan ziyade 0'dan başlamak için indekse ihtiyacım var. İşte bir örnek:

In [1]: import pandas as pd

In [2]: result = pd.DataFrame({'Count': [83, 19, 20]})

In [3]: result.to_csv('result.csv', index_label='Event_id')                               

Aşağıdaki çıktıyı üretir:

In [4]: !cat result.csv
Event_id,Count
0,83
1,19
2,20

Ama istediğim çıktı şu:

In [5]: !cat result2.csv
Event_id,Count
1,83
2,19
3,20

Bunun, veri çerçevemde 1'e bir sütun olarak kaydırılmış bir tamsayılar dizisi ekleyerek yapılabileceğinin farkındayım, ancak Panda'lara yeniyim ve daha temiz bir yol olup olmadığını merak ediyorum.

Teşekkürler.


25
2017-11-23 21:12


Menşei




Cevaplar:


Dizin bir nesnedir ve varsayılan dizin başlar 0:

>>> result.index
Int64Index([0, 1, 2], dtype=int64)

Bu endeksi 1 ile

>>> result.index += 1 
>>> result.index
Int64Index([1, 2, 3], dtype=int64)

40
2017-11-23 21:57



bir şekilde dizin adını değiştirir - bu yüzden adlandırma ile uygun bir düzen: df.index + = 1; df.index.name = 'name' - yourstruly


Sadece dizini csv'ye yazmadan önce ayarlayın. df.index = np.arange(1, len(df))

Ve sonra normal yaz.


7
2017-11-23 21:54



np şu şekilde içe aktarılır: import numpy np olarak - Dung
df.index = arange (1, len (df) + 1 olmalıdır) - Natesh bhat


kaynak: Python pandalarında, ek sütun oluşturmadan satır dizini sıfır yerine 1'den başlat

Çalışma örneği:

import pandas as pdas
dframe = pdas.read_csv(open(input_file))
dframe.index = dframe.index + 1

3
2017-08-29 21:11





Bu benim için çalıştı

 df.index = np.arange(1, len(df)+1)

2
2018-04-28 07:06





Bir satırda başka bir yol:

df.shift()[1:]

1
2017-08-25 14:06