小编qxz*_*ver的帖子

Pandas DataFrame 将函数应用于多列并输出多列

我一直在寻找应用函数的最佳方法,该函数采用多个单独的 Pandas DataFrame 列并在同一个所述 DataFrame 中输出多个新列。假设我有以下内容:

def apply_func_to_df(df):
    df[['new_A', 'new_B']] = df.apply(lambda x: transform_func(x['A'], x['B'], x['C']), axis=1)

def transform_func(value_A, value_B, value_C):
    # do some processing and transformation and stuff
    return new_value_A, new_value_B
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此函数如上所示应用于整个 DataFrame df,以便输出 2 个新列。但是,这可以推广到接受nDataFrame 列并将m新列输出到同一 DataFrame 的用例/函数。

以下是我一直在关注的事情(取得了不同程度的成功):

  • 为函数调用创建一个 Pandas Series,然后附加到现有的 DataFrame,
  • 压缩输出列(但在我当前的实现中出现了一些问题)
  • 重写基本函数transform_func以显式期望行(即字段)A, BC如下所示,然后对 df 进行 apply:

def transform_func_mod(df_row):
    # do something with df_row['A'], df_row['B'], df_row['C]
    return new_value_A, new_value_B
Run Code Online (Sandbox Code Playgroud)

我想要一种非常通用和 Pythonic 的方法来完成这项任务,同时考虑性能(内存和时间方面)。我将不胜感激对此的任何意见,因为由于我对 Pandas 不熟悉,我一直在努力解决这个问题。

python apply dataframe pandas

9
推荐指数
1
解决办法
5504
查看次数

如何在没有足够 RAM 的情况下使用 Pandas 打开巨大的镶木地板文件

我正在尝试使用 Pandasread_parquet函数将一个相当大的 Parquet 文件(约 2 GB,约 3000 万行)读入我的 Jupyter Notebook(在 Python 3 中)。我还安装了该函数用作镶木地板文件引擎的pyarrowfastparquetread_parquet。不幸的是,似乎在阅读时,我的计算机死机,最终我收到一个错误,说它内存不足(我不想重复运行代码,因为这会导致再次冻结 - 我不知道逐字错误消息)。

有没有一种好方法可以将镶木地板文件的某些部分写入内存而不会发生这种情况?我知道镶木地板文件是柱状的,可能无法仅将部分记录存储到内存中,但如果有解决方法,我想将其拆分,或者看看我在尝试时是否做错了什么读入。

就规格而言,我确实有一台相对较弱的计算机,只有 6 GB 内存和 i3。CPU 为 2.2 GHz,可使用 Turbo Boost。

python pandas parquet fastparquet pyarrow

7
推荐指数
2
解决办法
2119
查看次数

Smalltalk stdin nextLine 用于固定数量的输入行

我目前正在尝试获取以下形式的 3 行特定输入:

XX.XX(浮点) XX(1-3 位整数) XX(1-3 位整数)

以下是我当前的代码:

inputStringOne := stdin nextLine.
mealCost := inputStringOne.

Transcript show: inputStringOne; cr .

inputStringTwo := stdin nextLine.
tipPercent := inputStringTwo.

Transcript show: inputStringTwo; cr .

inputString := stdin nextLine.
taxPercent := inputString .

mealCost inspect .
tipPercent inspect .
taxPercent inspect .
Run Code Online (Sandbox Code Playgroud)

我已经在这方面进行了 3-4 个小时的编程、搜索互联网等。我是一个自学 Smalltalk 的超级初学者,所以我试图找出为什么 nextLine 不能正确读取输入。以下是输入到 stdin 的示例输入,以及Transcript 显示检查的结果:

标准输入上的示例输入:

10.25
17
5
Run Code Online (Sandbox Code Playgroud)

标准输出上的输出:

10.25
.25
An instance of String
  contents: [
    [1]: $1
    [2]: …
Run Code Online (Sandbox Code Playgroud)

io smalltalk gnu-smalltalk

5
推荐指数
1
解决办法
1111
查看次数

什么是开始/学习 APL 的好资源?

我正在尝试开始使用 APL 和任何相关的 IDE、工具、编译器等。我可能需要在本地安装。我还在线查看了 APL repl,但所有符号似乎都很难输入(我什至不知道从哪里开始)。

我想知道我需要安装的任何在线资源、软件或软件包,以及有关 APL 的书籍或课程。我认为 StackOverflow 上没有关于这个问题的好答案,所以如果有人能指出我正确的方向,我将不胜感激。

apl

3
推荐指数
1
解决办法
75
查看次数