我有一组大数据文件(1M行x 20列).但是,我只对5个左右的数据列感兴趣.
我想我可以通过仅使用感兴趣的列创建这些文件的副本来使我更容易,所以我有较小的文件可用于后期处理.
我的计划是将文件读入数据帧,然后写入csv文件.
我一直在研究将大块的数据文件读入数据帧.
但是,我还没有找到任何关于如何将数据写入块中的csv文件的内容.
这是我现在正在尝试的,但这不附加csv文件:
with open(os.path.join(folder, filename), 'r') as src:
df = pd.read_csv(src, sep='\t',skiprows=(0,1,2),header=(0), chunksize=1000)
for chunk in df:
chunk.to_csv(os.path.join(folder, new_folder,
"new_file_" + filename),
columns = [['TIME','STUFF']])
Run Code Online (Sandbox Code Playgroud) 这是我现在正在做的事情:
11.11.11.111启动 Jupyter 笔记本:nohup jupyter notebook --ip=0.0.0.0 --no-browser &
http://(11.11.11.111 or 127.0.0.1):8889/?token=blahblahblah在新笔记本中启动单机客户端:
from dask.distributed import Client
client = Client()
Run Code Online (Sandbox Code Playgroud)打印client显示仪表板位于http://127.0.0.1:8787/status,但是,我在该 URL 处找不到仪表板。我也尝试过http://11.11.11.111:8787/status,但也没有成功。
我仍然可以使用 Dask Dataframes 运行笔记本中的所有内容,但我就是不知道如何查看仪表板。Bokeh安装在服务器上,我通过 Anaconda 运行 Jupyter Notebook。
尝试构建管道以从 3rd 方 REST API 端点数据源读取。
我正在使用 Hub 中的 HTTP(1.2.0 版)插件。
响应请求 URL 是: https://api.example.io/v2/somedata?return_count=false
响应体示例:
{
"paging": {
"token": "12456789",
"next": "https://api.example.io/v2/somedata?return_count=false&__paging_token=123456789"
},
"data": [
{
"cID": "aerrfaerrf",
"first": true,
"_id": "aerfaerrfaerrf",
"action": "aerrfaerrf",
"time": "1970-10-09T14:48:29+0000",
"email": "example@aol.com"
},
{...}
]
}
Run Code Online (Sandbox Code Playgroud)
日志中的主要错误是:
java.lang.NullPointerException: null
at io.cdap.plugin.http.source.common.pagination.BaseHttpPaginationIterator.getNextPage(BaseHttpPaginationIterator.java:118) ~[1580429892615-0/:na]
at io.cdap.plugin.http.source.common.pagination.BaseHttpPaginationIterator.ensurePageIterable(BaseHttpPaginationIterator.java:161) ~[1580429892615-0/:na]
at io.cdap.plugin.http.source.common.pagination.BaseHttpPaginationIterator.hasNext(BaseHttpPaginationIterator.java:203) ~[1580429892615-0/:na]
at io.cdap.plugin.http.source.batch.HttpRecordReader.nextKeyValue(HttpRecordReader.java:60) ~[1580429892615-0/:na]
at io.cdap.cdap.etl.batch.preview.LimitingRecordReader.nextKeyValue(LimitingRecordReader.java:51) ~[cdap-etl-core-6.1.1.jar:na]
at org.apache.spark.rdd.NewHadoopRDD$$anon$1.hasNext(NewHadoopRDD.scala:214) ~[spark-core_2.11-2.3.3.jar:2.3.3]
at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37) ~[spark-core_2.11-2.3.3.jar:2.3.3]
at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:439) ~[scala-library-2.11.8.jar:na]
at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:439) ~[scala-library-2.11.8.jar:na]
at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:439) ~[scala-library-2.11.8.jar:na]
at org.apache.spark.internal.io.SparkHadoopWriter$$anonfun$4.apply(SparkHadoopWriter.scala:128) ~[spark-core_2.11-2.3.3.jar:2.3.3]
at …Run Code Online (Sandbox Code Playgroud) 如何仅将数据帧的特定列乘以常数值?
df0 = pd.DataFrame({'A' : 1.,
'B' : 1,
'C' : 1,
'D' : np.array([1] * 4,dtype='int32')})
mult_by_two = df0.iloc[:,2:].mul(2)
print mult_by_two
Run Code Online (Sandbox Code Playgroud)
我明白了:
C D
0 2 2
1 2 2
2 2 2
3 2 2
Run Code Online (Sandbox Code Playgroud)
但我想要的是:
A B C D
0 1 1 2 2
1 1 1 2 2
2 1 1 2 2
3 1 1 2 2
Run Code Online (Sandbox Code Playgroud) dataframe ×2
pandas ×2
python ×2
centos ×1
dask ×1
endpoint ×1
large-data ×1
linux ×1
pagination ×1
python-3.x ×1
rest ×1