简体   繁体   中英

Python : Remove all data from a column of a dataframe except the last value that we store in the first row

Let's say that I have a simple Dataframe.

data1 = [12,34,465,678,896]
df1 = pd.DataFrame(data1, columns= ['Data'])
print(df1)

   Data
0    12
1    34
2   465
3   678
4   896

I want to delete all the data except the last value of the column that I want to save in the first row. It can be an column with thousands of rows. So I would like the result :

  Data
0  896
1   
2   
3   
4   

What are the simplest functions to do that efficiently ?

Thank you

You an use iloc where 0 is the first row of the data column, -1 is the last row and 1: is every row except the first row:

df1['Data'].iloc[0] = df1['Data'].iloc[-1]
df1['Data'].iloc[1:] = ''
df1
Out[1]: 
  Data
0  896
1     
2     
3     
4     

Use the loc accessor. Utilise the python x,y=a,b to assign the values

df1.loc[0,'Data'],df1.loc[1::,'Data']=df1['Data'].values[-1],''

 Data
0  896
1     
2     
3     
4     

You can use .reverse() method of python lists, something like this:

my_data = df1['Data'].to_list() # Get list from Serie
my_data.reverse() # Reverse order.
my_data[1:] = [""]*len(my_data[1:]) # Fill with spaces from the second item.
df1['Data'] = my_data

Output:

    Data
0   896
1   
2   
3   
4   

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