小编wha*_*iam的帖子

在Pandas中更快地处理Dataframe

我正在尝试处理非常大的文件(10,000+观察),其中邮政编码不容易格式化.我需要将它们全部转换为前5位数,这是我当前的代码:

def makezip(frame, zipcol):
    i = 0
    while i < len(frame):
        frame[zipcol][i] = frame[zipcol][i][:5]
        i += 1
    return frame
Run Code Online (Sandbox Code Playgroud)

frame是数据帧,zipcol是包含邮政编码的列的名称.虽然这有效,但处理需要很长时间.有更快的方法吗?

python pandas

4
推荐指数
1
解决办法
241
查看次数

加快Pandas DB中的交叉引用过滤

我正在使用一个非常大的数据捐赠数据库,其中包含捐赠ID,管道ID,金额的相关列,例如:

  TRANSACTION_ID BACK_REFERENCE_TRAN_ID_NUMBER  CONTRIBUTION_AMOUNT
0    VR0P4H2SEZ1                             0                  100
1    VR0P4H3X770                             0                 2700
2    VR0P4GY6QV1                             0                  500
3    VR0P4H3X720                             0                 1700
4    VR0P4GYHHA0                  VR0P4GYHHA0E                  200
Run Code Online (Sandbox Code Playgroud)

我需要做的是识别TRANSACTION_ID对应于任何BACK_REFERENCE_TRAN_ID_NUMBER的所有行.我目前的代码,虽然有点笨拙,但是:

is_from_conduit = df[df.BACK_REFERENCE_TRAN_ID_NUMBER != "0"].BACK_REFERENCE_TRAN_ID_NUMBER.tolist()
df['CONDUIT_FOR_OTHER_DONATION'] = 0
for row in df.index:
    if df['TRANSACTION_ID'][row] in is_from_conduit:
        df['CONDUIT_FOR_OTHER_DONATION'][row] = 1
    else:
        df['CONDUIT_FOR_OTHER_DONATION'][row] = 0
Run Code Online (Sandbox Code Playgroud)

然而,对于拥有大量管道捐赠的非常大的数据集,这需要永远.我知道必须有一个更简单的方法,但很明显我无法想出如何用这句话来找出可能的内容.

python performance pandas

4
推荐指数
1
解决办法
78
查看次数

Pandas将列爆炸成行

我有一个DataFrame,每行有两列:date和mentions.最终结果将是每个日期提及的数据帧,如果我可以突破提及,这是我被困的地方,这应该很容易通过GroupBy.原始数据如下所示:

date        mentions
2018-01-01  alpha, beta, gamma
2018-01-01  alpha
2018-01-02  beta
2018-01-03  delta
2018-01-05  alpha
2018-01-07  alpha
2018-01-10  delta, gamma
2018-01-11  gamma
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为:

date        mentions
2018-01-01  alpha
2018-01-01  beta
2018-01-01  gamma
2018-01-01  alpha
2018-01-02  beta
2018-01-03  delta
2018-01-05  alpha
2018-01-07  alpha
2018-01-10  delta
2018-01-10  gamma
2018-01-11  gamma
Run Code Online (Sandbox Code Playgroud)

最终状态应该如下所示,我可以通过GroupBy值计数(加上重建索引)得到:

date        alpha     beta     gamma     delta
2018-01-01  2         1        1         0
2018-01-02  0         1        1         0
2018-01-03  0         0        0         1
2018-01-04  0         0        0         0
2018-01-05  1         0        0         0
2018-01-06  0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

熊猫有条件地复制单元格值

使用 Pandas DataFrame,我试图将数据从一个单元格复制到另一个单元格,仅当接收方单元格包含特定值时。转移应从:

   Col1    Col2
0     4       X
1     2       5
2     1       X
3     7       8
4    12      20
5     3       X
Run Code Online (Sandbox Code Playgroud)

结果应该是

   Col1    Col2
0     4       4
1     2       5
2     1       1
3     7       8
4    12      20
5     3       3
Run Code Online (Sandbox Code Playgroud)

是否有我缺少的优雅或简单的解决方案?

python pandas

2
推荐指数
1
解决办法
7219
查看次数

标签 统计

pandas ×4

python ×4

performance ×1