gpt4 book ai didi

python - 如何从 CSV 中的括号中拆分文本,并用它创建另一列

转载 作者:行者123 更新时间:2023-12-04 00:19:09 38 4
gpt4 key购买 nike

我是 Python 世界的新手,所以我已经为这个问题苦苦挣扎了几天。我提前谢谢你们。

我一直在尝试将单个行和列文本分成三个不同的文本。为了更好地解释我自己,这就是我所在的位置。

所以这是我来自 csv 的 pandas 数据框:

在[2]中:

df = pd.read_csv('raw_csv/consejo_judicatura_guerrero.csv', header=None)
df.columns = ["institution"]
df

输出[2]:

       institution 
0 1.1.2. Consejo Nacional de Ciencias (CNCOO00012)

然后,我首先尝试将 1.1.2. 分隔到一个名为 number 的新列中,我成功地完成了:

在[3]中:

new_df = pd.DataFrame(df['institution'].str.split('. ',1).tolist(),columns=['number', 'institution'])

输出[3]:

       number institution 
0 1.1.2. Consejo Nacional de Ciencias (CNCOO00012)

最后,尝试将 (CNCOO00012) 拆分到名为 unit_id 的新列中,我得到以下信息:

在[4]中:

new_df['institution'] = pd.DataFrame(new_df['institution'].str.split('(').tolist(),columns=['institution', 'unit_id'])

输出[4]:

------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-70d13206881c> in <module>
----> 1 new_df['institution'] = pd.DataFrame(new_df['institution'].str.split('(').tolist(),columns=['institution', 'unit_id'])

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
472 if is_named_tuple(data[0]) and columns is None:
473 columns = data[0]._fields
--> 474 arrays, columns = to_arrays(data, columns, dtype=dtype)
475 columns = ensure_index(columns)
476

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/construction.py in to_arrays(data, columns, coerce_float, dtype)
459 return [], [] # columns if columns is not None else []
460 if isinstance(data[0], (list, tuple)):
--> 461 return _list_to_arrays(data, columns, coerce_float=coerce_float, dtype=dtype)
462 elif isinstance(data[0], abc.Mapping):
463 return _list_of_dict_to_arrays(

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/construction.py in _list_to_arrays(data, columns, coerce_float, dtype)
491 else:
492 # list of lists
--> 493 content = list(lib.to_object_array(data).T)
494 # gh-26429 do not raise user-facing AssertionError
495 try:

pandas/_libs/lib.pyx in pandas._libs.lib.to_object_array()

TypeError: object of type 'NoneType' has no len()

我该怎么做才能成功完成这项任务?

最佳答案

您可以将 assignstr.split 一起使用,如下所示。但是文本的格式应该是固定的。

df.assign(number = df.institution.str.split().str[0], \
unit_id = df.institution.str.split().str[-1])

输出:

                                        institution  number       unit_id
0 1.1.2. Consejo Nacional de Ciencias (CNCOO00012) 1.1.2. (CNCOO00012)

或者如果你想从 unit_id 中去除 () 使用

df.assign(number = df.institution.str.split().str[0], \
unit_id = df.institution.str.split().str[-1].str.strip('()'))

institution number unit_id
0 1.1.2. Consejo Nacional de Ciencias (CNCOO00012) 1.1.2. CNCOO00012

关于python - 如何从 CSV 中的括号中拆分文本,并用它创建另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61996944/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com