【发布时间】:2020-02-19 21:31:51
【问题描述】:
目标:
在包含串联专有名称的数据框中,将名称大写的每个名称用空格分开,并在相应的数据框元素中替换该值。在对独立值进行测试时,对 regex 函数的测试会产生正确的结果。
流程
data = {'Full_Name' : ["JackSmithDanielsSmith", "JoeShmoeDoeBoe", "MikeJohnChaoCow"]
'First_Name': ["JackSmith", "JoeShmoeDoe", "Mike"]
'Last_Name' : ["DanielsSmith", "Boe", "JohnChaoCow"]}
df = pd.DataFrame(data)
# Regex Function (returns expected results)
def CapitalizeWord(word):
word = str(word)
return re.sub("([A-Z])", " \\1", word).strip()
# Procedure
for column in df:
replace_data = []
columnObj = df[column]
for word in columnObj:
word_split = CapitalizeWord(word)
replace_data.append(word_split)
df.replace(columnObj, append_data)
错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-80-b8089f04c8c8> in <module>
----> 9 df.replace(columnObj, replace_data)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in replace(self, to_replace, value, inplace, limit, regex, method)
4261 limit=limit,
4262 regex=regex,
-> 4263 method=method,
4264 )
4265
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in replace(self, to_replace, value, inplace, limit, regex, method)
6719 )
6720 else:
-> 6721 raise TypeError("value argument must be scalar, dict, or " "Series")
6722
6723 elif is_list_like(to_replace): # [NA, ''] -> [0, 'missing']
TypeError: value argument must be scalar, dict, or Series
研究:
在 df.replace Docs 中,我注意到我的问题与结尾段落中提到的问题相似。当与regex 一起使用时,我并不完全理解这个定义。
【问题讨论】:
-
你能添加一个显示你预期输出的数据框吗
-
反映在所选答案@sammywemmy
标签: regex python-3.x pandas