我有一个JSON文件,我想要转换为CSV文件.我怎么能用Python做到这一点?
我试过了:
import json
import csv
f = open('data.json')
data = json.load(f)
f.close()
f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
csv_file.writerow(item)
f.close()
Run Code Online (Sandbox Code Playgroud)
但是,它没有用.我正在使用Django,我收到的错误是:
import json
import csv
f = open('data.json')
data = json.load(f)
f.close()
f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
f.writerow(item) # ? changed
f.close()
Run Code Online (Sandbox Code Playgroud)
那么,我尝试了以下内容:
[{
"pk": 22,
"model": "auth.permission",
"fields": {
"codename": "add_logentry",
"name": "Can add log entry",
"content_type": 8
}
}, {
"pk": 23,
"model": "auth.permission",
"fields": {
"codename": "change_logentry", …Run Code Online (Sandbox Code Playgroud) 我正在使用以下课程轻松存储我的歌曲数据.
class Song:
"""The class to store the details of each song"""
attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
def __init__(self):
for att in self.attsToStore:
exec 'self.%s=None'%(att.lower()) in locals()
def setDetail(self, key, val):
if key in self.attsToStore:
exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)
我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?
我正在开发纯Python的网页游戏,并希望有一些简单的脚本可用于更多动态的游戏内容.特权用户可以实时添加游戏内容.
如果脚本语言可以是Python,那就太好了.但是,由于恶意用户可能会造成严重破坏,因此无法在访问游戏运行环境的情况下运行.是否可以在纯Python中运行沙盒Python?
更新:事实上,由于真正的Python支持会有点过分,因此使用Pythonic语法的简单脚本语言将是完美的.
如果没有任何Pythonic脚本解释器,是否有任何其他开源脚本解释器用纯Python编写,我可以使用?要求是对变量,基本条件和函数调用(不是定义)的支持.
我有一个csv,我正在读一个熊猫数据帧.然而,其中一列是字典形式.这是一个例子:
ColA, ColB, ColC, ColdD
20, 30, {"ab":"1", "we":"2", "as":"3"},"String"
Run Code Online (Sandbox Code Playgroud)
如何将其转换为如下所示的数据框:
ColA, ColB, AB, WE, AS, ColdD
20, 30, "1", "2", "3", "String"
Run Code Online (Sandbox Code Playgroud)
编辑 我修复了问题,它看起来像这样但是是一个需要解析的字符串,而不是dict对象.
希望提高我的数据科学技能。我正在练习从体育网站拉取 url 数据,并且 json 文件有多个嵌套字典。我希望能够提取这些数据以在 matplotlib 等中映射我自己的排行榜的自定义形式,但是我很难将 json 转换为可行的 df。
主要网站为:https : //www.usopen.com/scoring.html
看看背景,我相信实时信息是从下面短代码中列出的链接中提取的。我正在使用 Jupyter 笔记本。我可以成功拉取数据。
但是正如您所看到的,它正在提取多个嵌套字典,这使得提取简单的数据帧变得非常困难。
只是想得到球员,比分达到标准杆,总分和回合拉。任何帮助将不胜感激,谢谢!
import pandas as pd
import urllib as ul
import json
url = "https://gripapi-static-pd.usopen.com/gripapi/leaderboard.json"
response = ul.request.urlopen(url)
data = json.loads(response.read())
print(data)
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的Pandas dataframe地方,每个单元格包含一个列表.我想将列表中的每个元素拆分为它自己的列.我可以通过导出值然后创建新值来实现dataframe.这似乎不是一个好方法,特别是如果我dataframe在列表列之外有一个列.
import pandas as pd
df = pd.DataFrame(data=[[[8,10,12]],
[[7,9,11]]])
df = pd.DataFrame(data=[x[0] for x in df.values])
Run Code Online (Sandbox Code Playgroud)
期望的输出:
0 1 2
0 8 10 12
1 7 9 11
Run Code Online (Sandbox Code Playgroud)
基于@Psidom回复的后续行动:
如果我确实有第二列:
df = pd.DataFrame(data=[[[8,10,12], 'A'],
[[7,9,11], 'B']])
Run Code Online (Sandbox Code Playgroud)
我怎么不松开其他栏?
期望的输出:
0 1 2 3
0 8 10 12 A
1 7 9 11 B
Run Code Online (Sandbox Code Playgroud) 是否有用于处理python中的TMX(翻译记忆库eXchange)文件的模块,如果没有的话,还有另一种方法吗?
就目前而言,我有一个2gb的巨大文件,上面有法英字幕。是否有可能处理这样的文件,还是我必须将其分解?
我有一个 Pandas DataFrame,其中一列是一系列 dicts,如下所示:
colA colB colC
0 7 7 {'foo': 185, 'bar': 182, 'baz': 148}
1 2 8 {'foo': 117, 'bar': 103, 'baz': 155}
2 5 10 {'foo': 165, 'bar': 184, 'baz': 170}
3 3 2 {'foo': 121, 'bar': 151, 'baz': 187}
4 5 5 {'foo': 137, 'bar': 199, 'baz': 108}
Run Code Online (Sandbox Code Playgroud)
我希望来自 dicts的foo,bar和baz键值对成为我数据框中的列,这样我就得到了这样的结果:
colA colB foo bar baz
0 7 7 185 182 148
1 2 8 117 103 155
2 5 10 …Run Code Online (Sandbox Code Playgroud) 我尝试从我的 Pandas 数据框中的嵌套字典创建一个数据框,但我无法让它工作......
我的数据框:
created_at selected
2019-08-13T12:24:53+00:00 {"982813":false,"1786112":true,"3002218":false}
2019-08-31T13:47:51+00:00 {"309279":true,"1903384":false}
...
Run Code Online (Sandbox Code Playgroud)
我想用选定的列数据创建一个新的 df 格式如下:
created_at ID Value
2019-08-13T12:24:53+00:00 982813 false
2019-08-13T12:24:53+00:00 1786112 true
2019-08-13T12:24:53+00:00 3002218 false
2019-08-31T13:47:51+00:00 309279 true
2019-08-31T13:47:51+00:00 1903384 false
...
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用 expand() 和 json_normalize() 没有成功,所以我决定使用 pd.DataFrame.from_dict() 和如下所示的 for 循环,但我遇到了错误。
x = {}
for row in df.selected:
pd.DataFrame.from_dict(row, orient='index')
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
AttributeError: 'str' 对象没有属性 'values'
我仍然是 python 的初学者,所以如果有人作为一个想法/解释,我会全神贯注。
pandas.DataFramestr、dict或listtype。NaN时处理值的问题。df.dropna().reset_index(drop=True)str必须将列中的值转换为dict类型,使用, 。ast.literal_eval.json_normalizeimport numpy as np
import pandas as pd
from ast import literal_eval
df = pd.DataFrame({'col_str': ['{"a": "46", "b": "3", "c": "12"}', '{"b": "2", "c": "7"}', '{"c": "11"}', np.NaN]})
col_str
0 {"a": "46", "b": "3", "c": "12"}
1 {"b": "2", "c": "7"}
2 {"c": "11"}
3 NaN
type(df.iloc[0, 0])
[out]: str
df.col_str.apply(literal_eval)
Run Code Online (Sandbox Code Playgroud)
错误:
df.col_str.apply(literal_eval) results in ValueError: malformed …Run Code Online (Sandbox Code Playgroud) python ×9
pandas ×6
dictionary ×3
json ×3
dataframe ×2
csv ×1
eval ×1
list ×1
python-2.7 ×1
python-3.x ×1
pytmx ×1
scripting ×1
series ×1
tmx ×1