当某些元素为空时如何重塑python向量

时间:2018-09-05 12:35:49

标签: python pandas

我有一个df,值:

   A   B   C   D
0  1   2   3   2        
1  2   3   3   9        
2  5   3   6   6        
3  3       6   7       
4  6           7      
5  2              

df.shape是6x4,例如

df.iloc[:,1]拔出了B列,但是len(df.iloc[:,1])也= 6

如何“重塑” df.iloc[:,1]?我可以使用哪个函数,以便输出为该列中实际值的长度。

在这种情况下,我的预期输出为3

2 个答案:

答案 0 :(得分:1)

您可以使用last_valid_index。请注意,由于您的系列最初包含NaN个值,并且这些值被视为float,因此即使在过滤之后,您的系列也将是float。您可能希望将其转换为int作为一个单独的步骤。

# first convert dataframe to numeric
df = df.apply(pd.to_numeric, errors='coerce')

# extract column
B = df.iloc[:, 1]

# filter to the last valid value
B_filtered = B[:B.last_valid_index()]

print(B_filtered)

0    2.0
1    3.0
2    3.0
3    6.0
Name: B, dtype: float64

答案 1 :(得分:0)

您可以像这样使用列表理解。

len([x for x in df.iloc[:,1] if x != ''])