熟悉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寄予厚望的家伙
答案 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