【发布时间】:2026-01-25 17:15:02
【问题描述】:
我有一个 pandas 数据框,其中包含从 csv 文件中提取的列。其中一列包含包含特定数字的字符串,我想提取。它显示了一个TypeError,我认为这是因为列的对象数据类型,但在提取工作期间设置列的数据类型也没有,astype 在特定列上也没有工作。早些时候,我从 Excel 文件中提取了相同的列,并且正则表达式对其进行了处理,没问题。
工作头如下:
Transaction Date PARTICULARS DEPOSITS WITHDRAWALS Amount Dr/Cr Calc_Amount Calc RRN Number RRN-AMT
0 2019-05-30 UPI/914923281641/UPI/raghu.m.v2016@o/ 0 32.86 32.86 Dr 32.86 914923281641 0100
1 2019-05-30 UPI/915000512028/UPI/hemanth1999kuma/ 0 0.95 0.95 Dr 0.95 915000512028 0100
2 2019-05-30 UPI/RVSL915000512028/UPI/hemanth1999kuma/ 0.95 0 0.95 Cr -0.95 915000512028 0100
3 2019-05-30 UPI/914923451855/UPI/tpmanzoor55@okh/Federal Bank 1.19 0 1.19 Cr -1.19 914923451855 0100
4 2019-05-30 UPI/914923339262/UPI/ravimaurya8735@/ 0 0.94 0.94 Dr 0.94 914923339262 0100
从此代码:
for i, row in bank_statement_30May.iterrows():
result = [e for e in re.split("[^0-9]",row[1]) if e != '']
bank_statement_30May.loc[i,"Calc RRN Number"] = max(map(int,result))
这是第二个代码的错误:
result = [e for e in re.split("[^0-9]",row[1]) if e != '']
File "C:\Users\Suraj Joshi\AppData\Local\Programs\Python\Python37\lib\re.py", line 213, in split
return _compile(pattern, flags).split(string, maxsplit)
TypeError: cannot use a string pattern on a bytes-like object
【问题讨论】:
-
对不起,不清楚,不,我只想要里面的数字,因为你可以看到有时 UPI 之间的东西还有其他东西。我只想要在第一个代码块的最右边可以看到的数字。无论如何,我认为这些将是最大的数字,所以我使用了这个逻辑。
-
好的,所以你已经有了一个数据最大的列,现在你想用
Calc RRN Number列做什么? -
没什么,我只是想要那个专栏。我没有“已经”拥有它,因为这只是我正在处理的示例数据。我还有其他 csv 文件要处理,但如果它不适用于示例,那么它不适用于其中任何一个。
-
所以
df['new_col']=df.PARTICULARS.str.extract('(\d+)',expand=False)? -
是的,它工作正常。谢谢!
标签: python regex pandas dataframe typeerror