我使用url调用下载数据。dataframe的列不是静态的。例如,在一个url调用中,数据帧可以包含x
列,而在另一个url调用中,它可以包含y
列等
始终包含在数据帧中的列是id
列。潜在列的名称为:col1, col2, col3, col4, col5, col6
(除了id
列)
我只想选择数据帧中所有列中不包含nan
的行。在这种情况下,数据帧只能包含id
列,因此不需要选择任何行
假设一个url调用使用以下假设代码给出以下数据帧:
data = {'id': [1000,2000,3000,4000],
'col1': [np.nan,25000,np.nan,np.nan],
'col2': [np.nan,27000,np.nan,30000],
'col3': [28000,np.nan,np.nan,25000]
}
dfexp = pd.DataFrame(data, columns = ['id', 'col1', 'col2', 'col3'])
id col1 col2 col3
0 1000 NaN NaN 28000.0
1 2000 25000.0 27000.0 NaN
2 3000 NaN NaN NaN
3 4000 NaN 30000.0 25000.0
例如,在上面的数据框中,我只想选择行0
、1
和3
第二个url调用可以使用以下假设代码提供潜在的数据帧:
data2 = {'id': [1500,2500,3500,4500],
'col1': [1900,np.nan,np.nan,np.nan],
'col4': [np.nan,np.nan,np.nan,np.nan],
'col5': [np.nan,np.nan,np.nan,np.nan],
'col6': [np.nan,np.nan,np.nan,25000]
}
dfexp2 = pd.DataFrame(data, columns = ['id', 'col1', 'col4', 'col5', 'col6'])
id col1 col4 col5 col6
0 1500 NaN NaN NaN NaN
1 2500 25000.0 NaN NaN NaN
2 3500 NaN NaN NaN NaN
3 4500 NaN NaN NaN NaN
从第二个数据帧中,我只想选择行1
通常,我只想选择至少有1non-nan
元素的行。我是一个初学者,动态的东西对我来说很棘手。你有什么想法吗
提前谢谢你
使用:
解释
你是初学者,让我解释一下
这将(步骤1)临时将列
id
设置为索引,然后(步骤2)删除包含所有nan
元素的所有行(原始列id
除外,因为它现在是索引,在dropna()
调用中不会检查nan
值的索引。)我们需要包含参数how='all'
(感谢提醒anon01)因为默认值是how='any'
,每当任何一列包含nan
时,它都会删除这些行。之后,我们可以(步骤3)通过调用reset_index()
从索引移回列来恢复列id
相关问题 更多 >
编程相关推荐