我有一个数据帧,如:
ID Notes
2345 Checked by John
2398 Verified by Stacy
3983 Double Checked on 2/23/17 by Marsha
Run Code Online (Sandbox Code Playgroud)
比方说,例如,只有3名员工需要检查:John,Stacy或Marsha.我想像这样制作一个新专栏:
ID Notes Employee
2345 Checked by John John
2398 Verified by Stacy Stacy
3983 Double Checked on 2/23/17 by Marsha Marsha
Run Code Online (Sandbox Code Playgroud)
这里是正则表达式还是grep更好?我应该尝试什么样的功能?谢谢!
编辑:我一直在尝试一堆解决方案,但似乎没有任何工作.我应该放弃并为每个员工创建具有二进制值的列吗?IE:
ID Notes John Stacy Marsha
2345 Checked by John 1 0 0
2398 Verified by Stacy 0 1 0
3983 Double Checked on 2/23/17 by Marsha 0 0 1
Run Code Online (Sandbox Code Playgroud) 我正在使用 Databricks 并尝试在同一个 Scala 笔记本中将数据帧从 Scala 传递到 Python。我使用以下方法将数据帧从 Python 传递到 Spark:
%python
python_df.registerTempTable("temp_table")
val scalaDF = table("temp_table")
Run Code Online (Sandbox Code Playgroud)
我如何反过来做同样的事情?非常感谢!!
我正在将虚拟数据加载到神经网络中,但是却收到一个似乎无法调试的错误:
这是我的可视化数据:
df:
Label Mar
0 | [[.332, .326], [.058, .138]]
0 | [[.234, .246], [.234, .395]]
1 | [[.084, .23], [.745, .923]],
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用“ Mar”列来预测“ Label”列(我知道此数据没有任何意义,它与我的真实数据相似)。这是我的神经网络代码:
model = Sequential()
model.add(Dense(3, input_dim=(1), activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
X = df['Mar']
Y = pd.get_dummies(df['Label'])
model.fit(X, Y, epochs=150, batch_size=10)
Run Code Online (Sandbox Code Playgroud)
这是创建示例数据的代码:
Sample = [{'Label': 0, 'Mar': [[.332, .326], [.058, .138]]},
{'Label': 0, 'Mar': [[.234, .246], [.013, .592]]},
{'Label': 1, 'Mar': [[.084, .23], [.745, .923]]}]
df = pd.DataFrame(Sample)
Run Code Online (Sandbox Code Playgroud)
当我到达此代码的最后一行时,出现以下错误:
Epoch 1/150
-----------------------------------------------------------------------
ValueError Traceback …Run Code Online (Sandbox Code Playgroud) 用于创建示例数据帧的代码:
Sample = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': [[.332, .326], [.058, .138]]},
{'account': 'Alpha Co', 'Jan': 200, 'Feb': 210, 'Mar': [[.234, .246], [.234, .395]]},
{'account': 'Blue Inc', 'Jan': 50, 'Feb': 90, 'Mar': [[.084, .23], [.745, .923]]}]
df = pd.DataFrame(Sample)
Run Code Online (Sandbox Code Playgroud)
示例数据框可视化:
df:
account Jan Feb Mar
Jones LLC | 150 | 200 | [.332, .326], [.058, .138]
Alpha Co | 200 | 210 | [[.234, .246], [.234, .395]
Blue Inc | 50 | 90 | [[.084, .23], [.745, …Run Code Online (Sandbox Code Playgroud) 我对现有工作流程做了一个小改动,但它破坏了气流。这是代码:
dag_name = platform + "_" + report['table']
dag = DAG(
dag_name,
catchup=True,
default_args=default_args,
schedule_interval=report['schedule']
)
with dag:
trigger_report = PythonOperator(
task_id=dag.dag_id + '_trigger_report',
python_callable=trigger_report,
provide_context=True,
op_kwargs={
'report_name': report['report'],
'amazonmws_conn_id': default_args['amazonmws_conn_id']
},
dag=dag
)
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
airflow.exceptions.AirflowException: python_callable param must be callable
背景故事:我每天都在运行一个Airflow作业,时间是start_date2019年7月1日。收集的作业要求第三方提供每天的数据,然后将这些数据加载到我们的数据库中。
在成功完成工作几天后,我意识到第三方数据源每月仅刷新一次数据。因此,我每天只是下载相同的数据。
那时,我将更改为start_date一年前(以获取前几个月的信息),并将DAG的时间表更改为每月运行一次。
如何(在气流UI中)完全重新启动DAG,以使其能够识别我的新产品start_date和计划,并像DAG一样运行完整的回填?
(我知道可以通过命令行请求该回填。但是,我没有命令行界面的权限,并且管理员无法访问。)
我正在编写一个气流作业来从 s3 读取 gzip 压缩文件。
首先我得到了对象的密钥,效果很好
obj = self.s3_hook.get_key(key, bucket_name=self.s3_bucket)
Run Code Online (Sandbox Code Playgroud)
obj 看起来不错,如下所示:
path/to/file/data_1.csv.gz
Run Code Online (Sandbox Code Playgroud)
现在我想将内容读入 pandas 数据帧。我已经尝试了很多事情,但这是我当前的迭代:
import pandas as pd
df = pd.read_csv(obj['Body'], compression='gzip')
Run Code Online (Sandbox Code Playgroud)
这将返回以下错误:
TypeError: 's3.Object' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我觉得我需要用 StringIO 或 BytesIO 做一些事情...我能够以字节的形式读取它,但认为有一种更直接的方法来获取数据帧
以防万一,当我解压并以 CSV 格式打开时,一行数据如下所示:
9671211|ddc9979d5ff90a4714fec7290657c90f|2138|2018-01-30 00:00:12|2018-01-30 00:00:16.069048|42b32863522dbe52e963034bb0aa68b6|1909705|8803795|collect|\\N|0||0||0|
Run Code Online (Sandbox Code Playgroud) 显然,此图像非常清晰,因为它的清晰度很低并且不是真实的单词。但是,使用此代码,我无法检测到任何东西:
import pytesseract
from PIL import Image, ImageEnhance, ImageFilter
image_name = 'NedNoodleArms.jpg'
im = Image.open(image_name)
im = im.filter(ImageFilter.MedianFilter())
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
im.save(image_name)
text = pytesseract.image_to_string(Image.open(image_name))
print(text)
Run Code Online (Sandbox Code Playgroud)
输出
, Md?aod?amms
Run Code Online (Sandbox Code Playgroud)
这里有什么想法吗?我的对比功能生成的图像是:
哪个看起来不错?我没有大量的OCR经验。您会在这里建议什么预处理?我尝试过将图像调整为更大的尺寸,这有一点帮助,但还不够,还有一些来自PIL的不同滤镜。没什么特别接近的
python ocr image-recognition python-tesseract image-preprocessing
用于创建示例数据帧的代码:
Sample = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': [[.332, .326], [.058, .138]]},
{'account': 'Alpha Co', 'Jan': 200, 'Feb': 210, 'Mar': [[.234, .246], [.234, .395], [.013, .592]]},
{'account': 'Blue Inc', 'Jan': 50, 'Feb': 90, 'Mar': [[.084, .23], [.745, .923], [.925, .843]]}]
df = pd.DataFrame(Sample)
Run Code Online (Sandbox Code Playgroud)
示例数据框可视化:
df:
account Jan Feb Mar
Jones LLC | 150 | 200 | [.332, .326], [.058, .138]
Alpha Co | 200 | 210 | [[.234, .246], [.234, .395], [.013, .592]]
Blue Inc | 50 …Run Code Online (Sandbox Code Playgroud) python ×7
pandas ×4
python-2.7 ×3
airflow ×2
apache-spark ×2
databricks ×2
dataframe ×2
pyspark ×2
keras ×1
kubernetes ×1
ocr ×1
python-3.x ×1
regex ×1
truncate ×1