如何在dplython中使用正则表达式添加新列

时间:2019-04-13 06:11:55

标签: python pandas

熟悉R和dplyr的人,正尝试使用dplython和pandas完成我在python中的任务之一。

我正在尝试在数据框中创建一个新列,该列使用正则表达式对一列进行求值,并在模式匹配时给定value = 1 else 0。

QDateTime time = QDateTime::currentDateTime() - QDateTime::fromString(QDateTime::currentDateTime().toString("yy/MM/dd hh:40:00"), "yy/MM/dd hh:mm:ss");

获取错误为: TypeError:预期的字符串或类似字节的对象

`预期产量

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)

感谢: 对python寄予厚望的家伙

2 个答案:

答案 0 :(得分:2)

这是一个不使用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"]]

答案 1 :(得分:1)

我编写了一个包 datar 来将 class Resumidor(): def __init__(self,datos,perspectiva='horario',*args): self.datos=datos self.perspectiva=perspectiva self._k = None def contar_diasxhora(self): k=np.zeros((24,1)) for i in range(0,24): k[i,0]=np.count_nonzero(self.datos.iloc[i,:]) k2=k[k>0].mean() k=pd.DataFrame(data=k,columns=['dias promedio por hora']) self._k = (k, k2) return self def gbarrah_horas(self,tipo): if not self._k: return k, k2 = self._k #grafica plt.rcdefaults() fig, ax = plt.subplots() y_pos = np.arange(24) ax.barh(y_pos,k.values[:,0],color='red') ax.set_yticks(y_pos) ax.set_ylabel('Hora') ax.set_xlabel('Deficit [MW]') ax.set_title('Maximo deficit por hora') plt.show() 和 family 移植到 python。现在您可以使用(几乎)与在 R 中相同的语法来完成它:

dplyr