Lengthy答复:最后答复载于“Answer”分节。
<>载体>
因此,鉴于你列举的前提条件,它希望我们有以下客户合同号码:
Client Contract Number |
123_2-31 |
23-1415 |
124-5_259 |
1234 |
鉴于你的代码和意图,我们希望有以下新的数据框架:
Search Text |
123 |
231415 |
1245 |
1234 |
(由于我们取消了你第一行的法文本中的所有表格,我假定第3次样本中没有任何表格。)
<><>>
2. 将该数据框架与以下代码重新编号:
import pandas as pd
data = {"Client Contract Number": ["123_2-31", "23-1415", "124-5_259", "1234"] }
raw_data_df = pd.DataFrame(data)
在试图操作我们第二行的法典时,我们看到以下错误信息:
raw_data_df[ Search Text ] = raw_data_df[ Client Contract Number ].str.split( _ )[0] if raw_data_df[ Client Contract Number ].str.contains("_") else raw_data_df[ Client Contract Number ].str.replace( - , )
ValueError: The truth value of a Series is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
我认为,这必须涉及以下事实:我们重新尝试适用。 基本上,条件是要试图在整个系列中得出一个单一的真相价值,因此,为什么安达要求我们使用<条码>a.empt、a.bool()、a.()、a.any()或a.all(。
Also using the [0]
index in raw_data_df["Client Contract Number"].str.split("_")[0]
will get us the list that results in splitting the first row of data, instead of the first index of each split row.
Answer
我认为,逐行操作的一个很好的替代办法是applymeth。 从根本上说,我们创造出一种匿名功能,这种功能完全是同一私人经营人,但个别行人除外。
用你原来的代码作为模板,其行文法如下:
raw_data_df[ Search Text ] = raw_data_df[ Client Contract Number ].str.replace( - , )
raw_data_df["Search Text"] = raw_data_df["Search Text"].apply(lambda x: x.split("_")[0] if "_" in x else x)
这应当产生你希望再次寻找的第二个数据框架。 由于你已重新删除了你的第一行,没有必要在你第二行的法典中重申这一点。
希望! 如果我列举的初步假设是准确的,你可能不得不打碎这一法典。