gpt4 book ai didi

python - 使用 if 解析列中的数据

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:54 25 4
gpt4 key购买 nike

我有一个包含多个不同文本限定符的数据框列,我希望能够设置一个新列,为每一行检查文本是否在每一行中,如果是,则执行此或此或彼。我试图删除数据并只返回下面显示蔬菜和淀粉的部分,但由于我的数据中的关键字种类繁多,我不能只说 COL1 中的蔬菜:col2 = 蔬菜。

示例:

     df['COL1']
0 PB~Cucumber_IT~_TL~Vegatables_SP~
1 PB~Potato_IT~_TB~Starch_SP~
2 PB~Onion_IT~_PE~Vegatables_BA~

我已经尝试过:

for i in df['COL1']:
if 'TL~' in df['COL1'][i]:
df['COL2'][i] = df['COL1'][i].str.split('TL~').str[1].str.split('_SP~').str[0]
elif 'TB~' in df['COL1'][i]:
df['COL2'][i] = df['COL1'][i].str.split('TB~').str[1].str.split('_SP~').str[0]
elif 'PE~' in df['COL1'][i]:
df['COL2'][i] = df['COL1'][i].str.split('PE~').str[1].str.split('_BA~').str[0]

预期输出:

     df['COL2']
0 Vegatables
1 Starch
2 Vegatables

df.info() 输出:* 注意 - 为了适应我删除了一些列,并且为了隐私我将它们重命名。 thiscolumn 是我尝试使用的 df 中的列:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 54 entries, 0 to 53
Data columns (total 16 columns):
notthiscolumn4 54 non-null object
thiscolumn 54 non-null object
notthiscolumn3 54 non-null object
notthiscolumn2 54 non-null object
notthiscolumn 54 non-null object
dtypes: object(16)

我在尝试不同的事情时遇到了各种错误,例如:- str 没有属性 str- 当它说它是一个 np.object 时,我尝试使用 iterrows,但随后出现了索引问题。- 值的长度与索引的长度不匹配。

任何方向表示赞赏!

最佳答案

不需要使用 numpy,pandas 对于此类操作有一些不同的选项。

import pandas as pd

def parse_row_col1(row):
result = ""
if 'TL~' in row.COL1:
result = row.COL1.split('TL~')[1].split('_SP~')[0]
elif 'TB~' in row.COL1:
result = row.COL1.split('TB~')[1].split('_SP~')[0]
elif 'PE~' in row.COL1:
result = row.COL1.split('PE~')[1].split('_BA~')[0]
return result


parse_res = pd.Series((parse_row_col1(curr) for curr in df.itertuples(index=False)))

这种迭代行元组的方法不如使用 numpy 的 select 快,但在处理大量条件时应该要简单得多。不仅如此,正如@rpanai 在他的回答中指出的那样,select 只能处理互斥的条件,而上面的解决方案无论如何都能发挥作用。

关于python - 使用 if 解析列中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58395809/

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