如何解决字典列表的列的pyarrow数据类型?
保存到镶木地板文件中时,是否应该使用一种特殊的pyarrow数据类型用于包含字典列表的列?
如果我将列表或字典列表另存为字符串,那么通常我必须import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',theme: ThemeData(
primarySwatch: Colors.blue,visualDensity: VisualDensity.adaptivePlatformDensity,),home: MyHomePage(title: 'Flutter Demo Home Page'),);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key,this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),body: GridView(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,//横轴三个子widget
childAspectRatio: 1.0 //宽高比为1时,子widget
),children: <Widget>[
PostTile('https://picsum.photos/250?image=9'),PostTile('https://picsum.photos/250?image=10'),PostTile('https://picsum.photos/250?image=11'),PostTile('https://picsum.photos/250?image=12'),]),floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,tooltip: 'Increment',child: Icon(Icons.add),);
}
}
class PostTile extends StatefulWidget {
String mediaUrl;
PostTile(this.mediaUrl);
@override
_PostTileState createState() => _PostTileState();
}
class _PostTileState extends State<PostTile> {
@override
Widget build(BuildContext context) {
return GestureDetector(
child: Image.network(widget.mediaUrl),onTap: () {
Navigator.push(
context,MaterialPageRoute(
fullscreenDialog: true,builder: (BuildContext context) {
return Scaffold(
body: GestureDetector(
child: Container(
height: MediaQuery.of(context).size.height,width: MediaQuery.of(context).size.width,child: Hero(
tag: 'imageHero',child: Image.network(
widget.mediaUrl,fit: BoxFit.fill,onTap: () {
Navigator.pop(context);
},);
}));
},);
}
}
将字段再次读入内存,以便大熊猫将数据识别为列表(因此我可以将其规范化CREATE TABLE users(
id MEDIUMINT NOT NULL AUTO_INCREMENT,username CHAR(30) NOT NULL,name VARCHAR(100),password VARCHAR(30),email VARCHAR(100),groups VARCHAR(100),PRIMARY KEY (id)
);
)
column_a:
.apply(eval)
column_b:
pd.json_normalize
只是想知道我是否应该将这些数据保存为字符串以外的其他内容。
编辑-从Zendesk中粘贴一些原始JSON的代码段。审核字段具有一个名为事件的字段,该字段是词典列表。在里面,还可以有其他词典列表(附件,并且在里面有一个词典列表,称为缩略图)
您是否可以使用pa.map_处理类似情况?有时我需要从这些嵌套字段中检索数据,这些数据我一开始都不知道存在。在我当前的实木复合地板数据集中,事件字段只是一列 (字符串类型),即使其中有许多嵌套字段。
[
{"id": "something","value": "else"},{"id": "something2","value": "else2"},]
。
["test","test2","test3"]
解决方法
假设您有一个带有“字典”和字符串列的df,并且字典都具有相同的键(id,您的情况下为value):
df = pd.DataFrame({
'col1': pd.Series([
{"id": "something","value": "else"},{"id": "something2","value": "else2"}
]),'col2': pd.Series(['foo','bar'])
}
)
udt = pa.struct([pa.field('id',pa.string()),pa.field('value',pa.string())])
schema = pa.schema([pa.field('col1',udt),pa.field('col2',pa.string())])
table = pa.Table.from_pandas(df,schema)
df = table.to_pandas()
如果您的词典没有相同的键,或者您事先不知道词典的键,则可以执行以下操作:
df = pd.DataFrame({
'col1': pd.Series([
[('id','something'),('value','"else')],[('id','something2'),'else2')],]),'bar'])
}
)
udt = pa.map_(pa.string(),pa.string())
schema = pa.schema([pa.field('col1',schema)
请注意,col1的格式是不同的(它使用成对列表而不是字典)。 另外,由于尚不支持将表转换回大熊猫,所以:
table.to_pandas()
>>> ArrowNotImplementedError: No known equivalent Pandas block for Arrow data of type map<string,string> is known.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。