我有一个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
答案 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 != ''])