Python:删除dataframe列中的所有数据,并将最后一个值保留在第一行

Python:删除dataframe列中的所有数据,并将最后一个值保留在第一行,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,假设我有一个简单的数据帧 import pandas as pd data1 = [12,34,'fsdf',678,'','','dfs','',''] df1 = pd.DataFrame(data1, columns= ['Data']) print(df1) Data 0 12 1 34 2 fsdf 3 678 4 5 6 dfs 7 8 我想删除所有数据,除了在第一行中要保留的列中找到的最后一个值。它可以是一个包含数千行的列。因此,我想知道结果:

假设我有一个简单的数据帧

import pandas as pd

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

   Data
0    12
1    34
2  fsdf
3   678
4
5
6   dfs
7
8
我想删除所有数据,除了在第一行中要保留的列中找到的最后一个值。它可以是一个包含数千行的列。因此,我想知道结果:

   Data
0   dfs
1   
2  
3  
4
5
6  
7
8
我必须保持这个数据框的形状,所以不删除行

最简单的功能是什么


谢谢

获取最后一个非空字符串值的索引并传递给列的第一个值:

s = df1.loc[df1['Data'].iloc[::-1].ne('').idxmax(), 'Data']
print (s)
dfs

df1['Data'] = ''
df1.loc[0, 'Data'] = s
print (df1)
  Data
0  dfs
1     
2     
3     
4     
5     
6     
7     
8    
如果空字符串缺少值:

data1 = [12,34,'fsdf',678,np.nan,np.nan,'dfs',np.nan,np.nan]
df1 = pd.DataFrame(data1, columns= ['Data'])
print(df1)
   Data
0    12
1    34
2  fsdf
3   678
4   NaN
5   NaN
6   dfs
7   NaN
8   NaN

s = df1.loc[df1['Data'].iloc[::-1].notna().idxmax(), 'Data']
print (s)
dfs

df1['Data'] = ''
df1.loc[0, 'Data'] = s
print (df1)
  Data
0  dfs
1     
2     
3     
4     
5     
6     
7     
8    

获取最后一个非空字符串值的索引并传递给列的第一个值:

s = df1.loc[df1['Data'].iloc[::-1].ne('').idxmax(), 'Data']
print (s)
dfs

df1['Data'] = ''
df1.loc[0, 'Data'] = s
print (df1)
  Data
0  dfs
1     
2     
3     
4     
5     
6     
7     
8    
如果空字符串缺少值:

data1 = [12,34,'fsdf',678,np.nan,np.nan,'dfs',np.nan,np.nan]
df1 = pd.DataFrame(data1, columns= ['Data'])
print(df1)
   Data
0    12
1    34
2  fsdf
3   678
4   NaN
5   NaN
6   dfs
7   NaN
8   NaN

s = df1.loc[df1['Data'].iloc[::-1].notna().idxmax(), 'Data']
print (s)
dfs

df1['Data'] = ''
df1.loc[0, 'Data'] = s
print (df1)
  Data
0  dfs
1     
2     
3     
4     
5     
6     
7     
8    
您可以使用NaN替换,现在使用

您可以在此处将fill_值设置为np.nan时使用

您可以使用NaN替换,现在使用

您可以在此处将fill_值设置为np.nan时使用


像这样简单的熊猫状况检查会有所帮助

df1['Data'] = [df1.loc[df1['Data'].ne(""), "Data"].iloc[-1]] + [''] * (len(df1) - 1)

像这样简单的熊猫状况检查会有所帮助

df1['Data'] = [df1.loc[df1['Data'].ne(""), "Data"].iloc[-1]] + [''] * (len(df1) - 1)