I need the index to start at 1 rather than 0 when writing a Pandas DataFrame to CSV.
Here's an example:
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')
Which produces the following output:
In [4]: !cat result.csv Event_id,Count 0,83 1,19 2,20
But my desired output is this:
In [5]: !cat result2.csv Event_id,Count 1,83 2,19 3,20
I realize that this could be done by adding a sequence of integers shifted by 1 as a column to my data frame, but I'm new to Pandas and I'm wondering if a cleaner way exists.
In Python pandas, start row index from 1 instead of zero without creating additional column - Stack Overflow. Stack Overflow for Teams – Start collaborating and sharing organizational knowledge.
Indexing in pandas means simply selecting particular rows and columns of data from a DataFrame. Indexing could mean selecting all the rows and some of the columns, some of the rows and all of the columns, or some of each of the rows and columns. Indexing can also be known as Subset Selection.
column[0]][0] pandas realizes that there is no index named 0, and falls back to . iloc which locates things by array indexing. Therefore it returns what it finds at the first location of the array, which is 'example' .
Index is an object, and default index starts from 0
:
>>> result.index Int64Index([0, 1, 2], dtype=int64)
You can shift this index by 1
with
>>> result.index += 1 >>> result.index Int64Index([1, 2, 3], dtype=int64)
Just set the index before writing to CSV.
df.index = np.arange(1, len(df))
And then write it normally.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With