pandas中的稀疏列:直接访问非空值的索引
Sparse columns in pandas: directly access the indices of non-null values
我有一个带有一些稀疏列的大型数据框(大约 10^8 行)。我希望能够 快速 访问给定列中的非空值,即实际保存在数组中的值。我认为这可以通过 df.<column name>[<indices of non-null values>]
来实现。但是,我看不到如何直接访问 <indices of non-null values>
,即不进行任何计算。当我尝试 df.<column name>.index
时,它告诉我它是 RangeIndex
,这没有帮助。当我 运行 df.<column name>.values
时,我什至可以 看到 <indices of non-null values>
,但是通过 dir(df.<column name>.values)
我仍然看不到访问的方法他们。
为了阐明我的意思,这里有一个玩具示例:
在这个例子中 <indices of non-null values>
是 [0,1,3]
。
编辑:@Piotr Żak 下面的答案是一个可行的解决方案,但它需要计算。有没有办法通过列或数组的属性直接访问 <indices of non-null values>
?
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1], [np.nan], [4], [np.nan], [9]]),
columns=['a'])
只过滤没有 nan:
filtered_df = df[df['a'].notnull()]
将列从 df 转换为数组:
s_array = filtered_df[["a"]].to_numpy()
或 - 将索引从 df 转换为数组:
filtered_df.index.tolist()
我有一个带有一些稀疏列的大型数据框(大约 10^8 行)。我希望能够 快速 访问给定列中的非空值,即实际保存在数组中的值。我认为这可以通过 df.<column name>[<indices of non-null values>]
来实现。但是,我看不到如何直接访问 <indices of non-null values>
,即不进行任何计算。当我尝试 df.<column name>.index
时,它告诉我它是 RangeIndex
,这没有帮助。当我 运行 df.<column name>.values
时,我什至可以 看到 <indices of non-null values>
,但是通过 dir(df.<column name>.values)
我仍然看不到访问的方法他们。
为了阐明我的意思,这里有一个玩具示例:
在这个例子中 <indices of non-null values>
是 [0,1,3]
。
编辑:@Piotr Żak 下面的答案是一个可行的解决方案,但它需要计算。有没有办法通过列或数组的属性直接访问 <indices of non-null values>
?
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1], [np.nan], [4], [np.nan], [9]]),
columns=['a'])
只过滤没有 nan:
filtered_df = df[df['a'].notnull()]
将列从 df 转换为数组:
s_array = filtered_df[["a"]].to_numpy()
或 - 将索引从 df 转换为数组:
filtered_df.index.tolist()