处理pandas数据帧碎片的非官方便利功能。
pandas-refract的Python项目详细描述
pandas refract是一个麻省理工学院许可的python包,它有一个简单的函数,允许用户划分 由所提供数组的“truthy”和“falsyness”生成的数据帧。
因为这个库处理按其值分割数据帧的问题,所以它使用光线折射和散射的图像,就像光线进入棱镜一样。 最后,这个包的目标是熊猫库的附加功能,允许用户.pop行 从一个满足条件的数据帧中,等等。据我所知,这是不可能的,就像下面的例子。
理想情况是:
target_df = df.pop(df['target_column'] == 'target_value') non_target_df = df
现在需要的是:
target_df = df[df['target_column'] == 'target_value'] non_target_df = df[df['target_column'] != 'target_value']
当熊猫折射时,它变成:
target_df, non_target_df = refract(df, df['target_column'] == 'target_value']]
显然,这个包没有提供当前熊猫库中当前不可能提供的任何内容。是的, 但是,为更复杂的切片添加一层便利,您需要按条件分隔而不是移除行。
示例
当前熊猫的最简单示例需要:
df1 = df[df.column.notnull()].reset_index(drop=True) df2 = df[df.column.isnull()].reset_index(drop=True)
或:
df1 = df[df.column == 'test_string'].reset_index(drop=True) df2 = df[df.column != 'test_string'].reset_index(drop=True)
当熊猫折射时,它变成:
df1, df2 = refract(df, df.column.notnull(), True]
以及:
df1, df2 = refract(df, df.column == test_string', True]
但不必传递显式布尔数组:
data = {'a': ['', 'truthy', '', 'truthy'], 'b': [0, 1, 2, 3] } df = pd.DataFrame(data) truthy_df, falsey_df = refract(df, df.a)
更复杂的例子: (其中“a”为假,“b”为奇数)
df1, df2 = refract(df, ((~df.a) & (df.b % 2 == 1)))