0
0   19   1   19   2   19  3   19

How can i change this above csv data in python to -

0   19
1   19
2   19
3   19

now i need help with reshaping my dataset which looks like this -

0   100   1   100   2   100  3   100  4   100  5   100     
6   200   7   200   8   200  9   200  0   200  1   200  
.....    

I want to reshape my dataset in the following format -

0 100
1 100
2 100
3 100
4 100
5 100
..
6 200
7 200
8 200
9 200
0 200
1 200
...

2 Answers 2

2
from io import StringIO

txt = """0   19   1   19   2   19  3   19
"""

df = pd.read_csv(StringIO(txt),header=None,sep=' ')
df=df.dropna(1)

pd.DataFrame(df.T[0].values.reshape(df.shape[1]//2,2))
Out[77]: 
   0   1
0  0  19
1  1  19
2  2  19
3  3  19
Sign up to request clarification or add additional context in comments.

2 Comments

for multiple rows how to apply this ? 0 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19
@Saf If you have another query, edit your question, or ask a new one.
2

You don't really need pandas. You can do this with np.loadtxt followed by a reshape.

import io

# replace this with your filename 
buf = io.StringIO('''0   19   1   19   2   19  3   19''')   # buf = 'file.txt'

arr = np.loadtxt(buf).reshape(-1, 2)    
arr

array([[  0.,  19.],
       [  1.,  19.],
       [  2.,  19.],
       [  3.,  19.]])

Note that if you have a different delimiter (example, comma), then you can specify it by passing a delimiter argument like so: np.loadtxt(buf, delimiter=',').

Now, save to CSV using savetxt -

np.savetxt('file.csv', arr, delimiter=',')

Later, when reading your CSV using pandas, use -

df = pd.read_csv(index_col=[0], header=None, names=['A', 'B'])

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.