简体   繁体   中英

Data-frame manipulation in python

I have a csv file with two columns of a and b as below:

a      b
601    1
602    2
603    3
604    4
605    5
606    6

I want to read and save data in a new csv file as below:

s    id
601  1
602  1
603  1
604  2
605  2
606  2

I have tried this code:

data=pd.read_csv('./dataset/test4.csv')
list=[]
i=0
while(i<6):
    list.append(data['a'].iloc[i:i+3])
    i+=3
df = pd.DataFrame(list)
print(df)

by this out put:

       0      1      2      3      4      5
a  601.0  602.0  603.0    NaN    NaN    NaN
a    NaN    NaN    NaN  604.0  605.0  606.0

First I need to save the list in a dataframe with following result:

  0         1      2      3      4      5
  601.0  602.0  603.0    604.0  605.0  606.0

and then save in a csv file. However I've got stuck in the first part.

Thanks for your help.

Assuming every 3 items in a constitute a group in b , just do a little integer division on the index.

data['b'] = (data.index // 3 + 1)

data

     a  b
0  601  1
1  602  1
2  603  1
3  604  2
4  605  2
5  606  2

Saving to CSV is straightforward - all you have to do is call df.to_csv(...) .


Division by index is fine as long as you have a monotonically increasing integer index. Otherwise, you can use np.arange (on MaxU's recommendation):

data['b'] = np.arange(len(data)) // 3 + 1

data

     a  b
0  601  1
1  602  1
2  603  1
3  604  2
4  605  2
5  606  2

By using you output

df.stack().unstack()
Out[115]: 
       0      1      2      3      4      5
a  601.0  602.0  603.0  604.0  605.0  606.0

Data Input

df
       0      1      2      3      4      5
a  601.0  602.0  603.0    NaN    NaN    NaN
a    NaN    NaN    NaN  604.0  605.0  606.0
In [45]: df[['a']].T
Out[45]:
     0    1    2    3    4    5
a  601  602  603  604  605  606

or

In [39]: df.set_index('b').T.rename_axis(None, axis=1)
Out[39]:
     1    2    3    4    5    6
a  601  602  603  604  605  606

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM