如何反转dask数据帧的列中的行顺序



这是代码

import dask.dataframe as dd
import pandas as pd

df = pd.DataFrame({
'col1' : ['A', 'A', 'E', np.nan, 'D', 'C','B','C'],
'col2' : [2, 1, 9, 8, 7, 4,10,5],
'col3': [0, 1, 9, 4, 2, 3,1,2],
'col4': [11,12,12,13,14,55,56,22], })
out_1=df.loc[::-1,"col4"]
dd_df=dd.from_pandas(df,npartitions=5)
out_2=dd_df.loc[::-1,"col4"]
#out_2 throws an error

我知道Dask的工作方式与熊猫不同。如何使用DASK获得与out_1相同的输出?

您可以颠倒分区的顺序,也可以安排一个作业来颠倒每个分区内的行顺序,如下所示:

In [30]: rev_df = dd.concat(
...:     [df.partitions[i] for i in range(df.npartitions - 1, -1, -1)]
...: ).map_partitions(lambda x: x[::-1], meta=df)
...:
In [31]: rev_df.compute()
Out[31]:
col1  col2  col3  col4
7    C     5     2    22
6    B    10     1    56
5    C     4     3    55
4    D     7     2    14
3  NaN     8     4    13
2    E     9     9    12
1    A     1     1    12
0    A     2     0    11

这将以与列或系列相同的方式工作:

rev_col1 = dd.concat(
[
df["col1"].partitions[i]
for i in range(df.npartitions - 1, -1, -1)
]
).map_partitions(lambda x: x[::-1], meta=df["col1"])

相关内容

  • 没有找到相关文章