我正在尝试处理非常大的文件(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是包含邮政编码的列的名称.虽然这有效,但处理需要很长时间.有更快的方法吗?
我正在使用一个非常大的数据捐赠数据库,其中包含捐赠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)
然而,对于拥有大量管道捐赠的非常大的数据集,这需要永远.我知道必须有一个更简单的方法,但很明显我无法想出如何用这句话来找出可能的内容.
我有一个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) 使用 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)
是否有我缺少的优雅或简单的解决方案?