提问人:Lilcodemuffin 提问时间:10/31/2023 更新时间:10/31/2023 访问量:45
如何使我的 JSON 文件在我的 pandas 数据帧中可读?
How do I make my JSON file readable in my pandas dataframe?
问:
这是我的代码:
with open(r'unique_columns.json', 'r') as f:
config = json.load(f)
unique_col_comb = config['Unique_Column_Combination']['TABLE_NAME']
df = pd.read_csv(f's3://path/to/file.csv', sep='|')
df_unique = df.set_index([unique_col_comb]).index.is_unique
print(df_unique)
我的 JSON 如下所示:
{
"Unique_Column_Combination":
{
"TABLE_NAME": "COL1, COL2, COL3"
}
}
我收到错误:
KeyError: "None of ['COL1, COL2, COL3'] are in the columns"
但是当我实际写出 中的列时,代码可以工作:df_unique
df_unique = df.set_index(['COL1', 'COL2', 'COL3']).index.is_unique
>>True
我想我需要在我的 JSON 文件中每个列名的末尾添加一个额外的引号 (“),但这样它就不会采用正确的 JSON 格式。我可以在 python 代码中添加它吗?或者我需要将我的 JSON 字典转换为 python 列表吗?
答:
2赞
Anonymous
10/31/2023
#1
"COL1, COL2, COL3"
是单个字符串。您可能应该将其拆分为三个列名unique_col_comb.split()
评论
0赞
Lilcodemuffin
10/31/2023
感谢您的回复。我在这里添加了它,但现在我收到错误.我以为它会单独阅读 3 列df_unique = df.set_index([unique_col_comb.split()]).index.is_unique
ValueError: Length mismatch: Expected 2 rows, received array of length 3
0赞
Lilcodemuffin
10/31/2023
没关系,我看到这个问题,它打印出这样的列:所以我必须去掉一个额外的逗号['COL1,', 'COL2,', 'COL3,']
0赞
Lilcodemuffin
10/31/2023
我把它改成了,它仍然给出同样的错误,我想我必须弄清楚其他事情......df_unique = df.set_index([unique_col_comb.split(", ")]).index.is_unique
ValueError: Length mismatch: Expected 2 rows, received array of length 3
0赞
Anonymous
11/1/2023
啊,你不需要拆分周围的方括号,因为它的输出已经是一个列表了。
0赞
Lilcodemuffin
11/1/2023
哦,我的天哪,这就是问题所在!你是对的!谢谢!
0赞
D.L
10/31/2023
#2
json 不会分解为数据帧。
下面是一个可以阅读的 json 示例:
import pandas as pd
import json
json_string = """
{
"employees": [
{
"name": "John Doe",
"email": "[email protected]",
"phone": "555-555-5555"
},
{
"name": "Jane Doe",
"email": "[email protected]",
"phone": "444-444-4444"
}
]
}
"""
j = json.loads(json_string)
df = pd.DataFrame(j['employees'])
print(df)
我没有在示例中提及,因为这部分有效,并且是失败的格式。df.read_json()
json
在您的示例中,如果添加方括号,则此 json 将起作用,例如:
{
"Unique_Column_Combination":[
{
"TABLE_NAME": "COL1, COL2, COL3"
}
]
}
给出这个:
TABLE_NAME
0 COL1, COL2, COL3
评论
0赞
Lilcodemuffin
10/31/2023
现在它说TypeError: list indices must be integers or slices, not str
0赞
D.L
10/31/2023
@Lilcodemuffin,这取决于数据的结构以及您想要实现的目标。在修改给定 JSON 的示例代码中,只有一列(称为“TABLE_NAME”)......因此,也许最好像答案上半部分的示例一样格式化......
评论