我有以下内容DataFrame
:
df=
0 1 2 3 4 ... 43 44 45 46 47
0 B349 M179 R42X K040 R17X ... None None None None None
1 M545 Q729 R609 J00X F339 ... None None None None None
Dataframe 的实际维度是:df= [220957 rows x 48 columns]
我需要创建一个DataFrame
单列来存储df
忽略空单元格的所有列的所有值(顺序无关紧要)。
例如,如果 4 之后的列中的所有值都为空,则结果将如下所示:
0 B349
1 M179
2 R42X
3 K040
4 R17X
5 M545
6 Q729
7 R609
8 J00X
9 F339
我尝试使用转置功能来做到这一点:
df = pd.concat([df.T[x] for x in df.T], ignore_index=True)
DataFrame
然后我想消除无效值,但考虑到实际数据量需要很长时间。
有人可以帮助我吗?我谢谢你!
由于您的所有列似乎都是类型
object
(str
),您不必担心可能的类型转换,您可以使用该方法pandas.DataFrame.to_numpy
将值作为 NumPy 数组获取,然后使用 扁平化数组numpy.ndarray.flatten
,并应用布尔值过滤以删除值None
。然后简单地将数组用作新 DataFrame 的列:order
如果您愿意,可以使用方法参数更改数组展平的顺序flatten
,“c”表示行(默认)或“f”表示列。这似乎令人困惑,但'c'
它指的是 c 语言和fortran,这是由于每种语言在内存中存储数组的方式(行更大/列更大)。'f'