Pandas 根据条件创建新列
Pandas creating new columns based on conditions
我有两个数据帧 df1
和 df2
。 df1
是一个包含多个列的数据框,df2
是一个只有一列的数据框 col2
,这是一个单词列表。
这显然是错误的,但我目前的代码是:df1["col_new"] = df1[df1["col1"]].str.contains(df2["col2"])
基本上,我想在 df1
中创建一个名为 col_new
的新列,如果值与值部分匹配,则它已从 col2
中复制了值 df2
在 col1
在 df1
.
例如,如果col2 = "apple"
和col1 = "im.apple3"
,那么我想将值"apple"
复制或赋值给col_new
等等。
我的另一个问题是在df1
.
中的col1
字符串中找到第二个大写字母index/position
我在这里发现了一个类似的问题并编写了这段代码:df["sec_upper"] = df["col1"].apply(lambda x: re.research("[A-Z]+{2}",x).span())[1]
但我收到一条错误消息“在位置 6 多次重复”。
有人可以帮帮我吗?提前致谢!
EDIT2:第一个问题解决了。谁能帮我解决第二个问题?
编辑 1:
示例数据帧:
df1
col1
im.apple3
Cookiemm
Hi_World123
df2
col2
apple
cookie
world
candy
soda
预期输出:
col1 new_col sec_upper
im.apple3 apple NaN
Cookiemm cookie NaN
Hi_World123 world 4
试试这个:
df1['new_col'] = df1['col1'].str.lower().str.extract(f"({'|'.join(df2['col2'])})")
输出:
col1 new_col
0 im.apple3 apple
1 Cookiemm cookie
2 Hi_World123 world
我有两个数据帧 df1
和 df2
。 df1
是一个包含多个列的数据框,df2
是一个只有一列的数据框 col2
,这是一个单词列表。
这显然是错误的,但我目前的代码是:df1["col_new"] = df1[df1["col1"]].str.contains(df2["col2"])
基本上,我想在 df1
中创建一个名为 col_new
的新列,如果值与值部分匹配,则它已从 col2
中复制了值 df2
在 col1
在 df1
.
例如,如果col2 = "apple"
和col1 = "im.apple3"
,那么我想将值"apple"
复制或赋值给col_new
等等。
我的另一个问题是在df1
.
col1
字符串中找到第二个大写字母index/position
我在这里发现了一个类似的问题并编写了这段代码:df["sec_upper"] = df["col1"].apply(lambda x: re.research("[A-Z]+{2}",x).span())[1]
但我收到一条错误消息“在位置 6 多次重复”。
有人可以帮帮我吗?提前致谢!
EDIT2:第一个问题解决了。谁能帮我解决第二个问题?
编辑 1:
示例数据帧:
df1
col1
im.apple3
Cookiemm
Hi_World123
df2
col2
apple
cookie
world
candy
soda
预期输出:
col1 new_col sec_upper
im.apple3 apple NaN
Cookiemm cookie NaN
Hi_World123 world 4
试试这个:
df1['new_col'] = df1['col1'].str.lower().str.extract(f"({'|'.join(df2['col2'])})")
输出:
col1 new_col
0 im.apple3 apple
1 Cookiemm cookie
2 Hi_World123 world