熟悉R和dplyr后,我试图使用dplython
和pandas
在python中完成我的一项任务。
正在尝试在数据框中创建一个新列,该列使用正则表达式评估列,并且在模式匹配时,我给出值 = 1 否则 0。
import dplython as dp
import pandas as pd
import re
a = {'module_name':'eventOutput','module_tpye':'export'}
b = {'module_name':'session','module_tpye':'export'}
df = pd.DataFrame()
master_data = (a,b)
new_df = df.from_dict(master_data)
dp_new_df = dp.DplyFrame(new_df)
dp_new_df = dp_new_df >> dp.mutate(
to_select=(
1
if bool(re.match(r"(.*)Output(.*)",dp.X.module_name))
else 0
)
)
TypeError: expected string or bytes-like object
时出现错误
预期输出:
module_name module_tpye to_select
0 eventOutput export 1
1 session export 0
致谢 :对蟒蛇寄予厚望的家伙
这是一个不使用 dplython 的解决方案,我不熟悉
import pandas as pd
import re
a={'module_name':'eventOutput','module_tpye':'export'}
b={'module_name':'session','module_tpye':'export'}
df = pd.DataFrame()
master_data = (a,b)
new_df = df.from_dict(master_data)
new_df["to_select"] = [bool(re.match(r"(.*)Output(.*)",x)) for x in new_df["module_name"]]
我写了一个datar
将dplyr
和家庭移植到python的包。现在,您可以使用(几乎(与在 R 中相同的语法来执行此操作:
>>> from datar.all import f, tibble, mutate, if_else, grepl
>>> df = tibble(
... module_name=['eventOutput', 'session'],
... module_type=['export']
... )
>>> df
module_name module_type
<object> <object>
0 eventOutput export
1 session export
>>>
>>> df >> mutate(
... to_select=if_else(grepl("Output", f.module_name), 1, 0)
... )
module_name module_type to_select
<object> <object> <int64>
0 eventOutput export 1
1 session export 0