我有以下DataFrame,除了这里包含的列之外,还有几列:
Col2 Col3 Col4
0 3682 US91892 US
1 7568 US91234 US
2 3546 UKIPD GB
3 7892 UKI43 GB
4 1243 US92345 US为此,如果col4 = US,我只想获取col3的最后5位数,例如:
Col2 Col3 Col4
0 3682 91892 US
1 7568 91234 US
2 3546 UKIPD GB
3 7892 UKI43 GB
4 1243 92345 US为此,我尝试了:
for a in df.index:
if df["col4"][a] == "US":
df["col3"][a] = df["col3"][a][-5:]然而,它需要几个小时才能运行(数据集大约有170,000个数据点,其中有几个这样的数据集)。我想知道有没有更快更有效的方法来做这件事?
发布于 2020-06-04 23:48:16
您可以尝试:
df['Col3'] = df['Col3'].str[-5:].where(df['Col4'].eq('US'),df['Col3'])
#or df['Col3'] = np.where(df['Col4'].eq('US'),df['Col3'].str[-5:],df['Col3'])
print(df) Col2 Col3 Col4
0 3682 91892 US
1 7568 91234 US
2 3546 UKIPD GB
3 7892 UKI43 GB
4 1243 92345 UShttps://stackoverflow.com/questions/62198773
复制相似问题