找到第一个非空和非空字符串值
find first non-null & non-empty string value
我用它来查找字符串的第一个非空值:
def get_first_non_null_values(df):
first_non_null_values = []
try:
kst = df['kst'].loc[df['kst'].first_valid_index()]
first_non_null_values.append(kst)
except:
kst = df['kst22'].loc[df['kst22'].first_valid_index()]
first_non_null_values.append(kst)
return first_non_null_values
first_non_null_values = get_first_non_null_values(df_merged)
这有效,但现在在我的新数据集中,我有一些空值和一些 ""
空字符串。我如何修改它以便我可以提取第一个既不是 null 也不是空字符串的值
您可以组合使用 notnull
/astype(bool)
和 idxmax
:
(df['col'].notnull()&df['col'].astype(bool)).idxmax()
示例输入:
>>> df = pd.DataFrame({'col': ['', float('nan'), False, None, 0, 'A', 3]})
>>> df
col
0
1 NaN
2 False
3 None
4 0
5 A
6 3
输出:5
空状态和真实状态:
col notnull astype(bool) both
0 True False False
1 NaN False True False
2 False True False False
3 None False False False
4 0 True False False
5 A True True True
6 3 True True True
第一个非空字符串值:
如果您只对非空字符串感兴趣:
df['col'].str.len().gt(0).idxmax()
我认为你需要:
df = pd.DataFrame({'col': ['', np.nan, '', 1, 2, 3]})
print(df['col'].loc[df['col'].replace('', np.nan).first_valid_index()])
我用它来查找字符串的第一个非空值:
def get_first_non_null_values(df):
first_non_null_values = []
try:
kst = df['kst'].loc[df['kst'].first_valid_index()]
first_non_null_values.append(kst)
except:
kst = df['kst22'].loc[df['kst22'].first_valid_index()]
first_non_null_values.append(kst)
return first_non_null_values
first_non_null_values = get_first_non_null_values(df_merged)
这有效,但现在在我的新数据集中,我有一些空值和一些 ""
空字符串。我如何修改它以便我可以提取第一个既不是 null 也不是空字符串的值
您可以组合使用 notnull
/astype(bool)
和 idxmax
:
(df['col'].notnull()&df['col'].astype(bool)).idxmax()
示例输入:
>>> df = pd.DataFrame({'col': ['', float('nan'), False, None, 0, 'A', 3]})
>>> df
col
0
1 NaN
2 False
3 None
4 0
5 A
6 3
输出:5
空状态和真实状态:
col notnull astype(bool) both
0 True False False
1 NaN False True False
2 False True False False
3 None False False False
4 0 True False False
5 A True True True
6 3 True True True
第一个非空字符串值:
如果您只对非空字符串感兴趣:
df['col'].str.len().gt(0).idxmax()
我认为你需要:
df = pd.DataFrame({'col': ['', np.nan, '', 1, 2, 3]})
print(df['col'].loc[df['col'].replace('', np.nan).first_valid_index()])