如何将 CSV 转换为 Keyed JSON?
How to convert to CSV to Keyed JSON?
目前,我正在使用以下代码创建 JSON:
import pandas as pd
import csv
data = pd.read_csv(r'C:\Users\user\Downloads\config_all_env.csv')
# print(data.to_string())
df = pd.DataFrame(data)
# print(df)
json_file = df.to_json(orient='index',indent=4)
print(json_file)
我的'config_all_env.csv'看起来像这样
_key,index,source
123456789100:LogGroup1,index1,Account1-123456789100:LogGroup1
123456789100:LogGroup2,index1,Account1-123456789100:LogGroup2
678901234200:LogGroup3,index2,Account2-678901234200:LogGroup3
678901234200:LogGroup4,index2,Account2-678901234200:LogGroup4
输出是这样的:
{
"0":{
"_key":"123456789100:LogGroup1",
"index":"index1",
"source":"Account1-123456789100:LogGroup1"
},
"1":{
"_key":"123456789100:LogGroup2",
"index":"index1",
"source":"Account1-123456789100:LogGroup2"
},
"2":{
"_key":"678901234200:LogGroup3",
"index":"index2",
"source":"Account2-678901234200:LogGroup3"
},
"3":{
"_key":"678901234200:LogGroup4",
"index":"index2",
"source":"Account2-678901234200:LogGroup4"
}
}
但是,这个网站:https://www.convertcsv.com/csv-to-json.htm 有一个 Keyed JSON 选项,在解析后收到这个输出:
{
"123456789100:LogGroup1": {
"index": "index1",
"source": "Account1-123456789100:LogGroup1"
},
"123456789100:LogGroup2": {
"index": "index1",
"source": "Account1-123456789100:LogGroup2"
},
"678901234200:LogGroup3": {
"index": "index2",
"source": "Account2-678901234200:LogGroup3"
},
"678901234200:LogGroup4": {
"index": "index2",
"source": "Account2-678901234200:LogGroup4"
}
}
如何使用 Python 实现此目的,因为每次打开此网站并进行转换是不可行的?
如果您首先将“_key”列设置为 pandas 数据框的索引,这应该可以实现您想要的(如果我正确解释了您的问题)。
import pandas as pd
my_data = pd.DataFrame.from_dict({
"0":{
"_key":"123456789100:LogGroup1",
"index":"index1",
"source":"Account1-123456789100:LogGroup1"
},
"1":{
"_key":"123456789100:LogGroup2",
"index":"index1",
"source":"Account1-123456789100:LogGroup2"
},
"2":{
"_key":"678901234200:LogGroup3",
"index":"index2",
"source":"Account2-678901234200:LogGroup3"
},
"3":{
"_key":"678901234200:LogGroup4",
"index":"index2",
"source":"Account2-678901234200:LogGroup4"
}
}, orient="index")
my_dict = my_data.set_index("_key").to_json(orient='index',indent=4)
输出:
{
"123456789100:LogGroup1":{
"index":"index1",
"source":"Account1-123456789100:LogGroup1"
},
"123456789100:LogGroup2":{
"index":"index1",
"source":"Account1-123456789100:LogGroup2"
},
"678901234200:LogGroup3":{
"index":"index2",
"source":"Account2-678901234200:LogGroup3"
},
"678901234200:LogGroup4":{
"index":"index2",
"source":"Account2-678901234200:LogGroup4"
}
}
目前,我正在使用以下代码创建 JSON:
import pandas as pd
import csv
data = pd.read_csv(r'C:\Users\user\Downloads\config_all_env.csv')
# print(data.to_string())
df = pd.DataFrame(data)
# print(df)
json_file = df.to_json(orient='index',indent=4)
print(json_file)
我的'config_all_env.csv'看起来像这样
_key,index,source
123456789100:LogGroup1,index1,Account1-123456789100:LogGroup1
123456789100:LogGroup2,index1,Account1-123456789100:LogGroup2
678901234200:LogGroup3,index2,Account2-678901234200:LogGroup3
678901234200:LogGroup4,index2,Account2-678901234200:LogGroup4
输出是这样的:
{
"0":{
"_key":"123456789100:LogGroup1",
"index":"index1",
"source":"Account1-123456789100:LogGroup1"
},
"1":{
"_key":"123456789100:LogGroup2",
"index":"index1",
"source":"Account1-123456789100:LogGroup2"
},
"2":{
"_key":"678901234200:LogGroup3",
"index":"index2",
"source":"Account2-678901234200:LogGroup3"
},
"3":{
"_key":"678901234200:LogGroup4",
"index":"index2",
"source":"Account2-678901234200:LogGroup4"
}
}
但是,这个网站:https://www.convertcsv.com/csv-to-json.htm 有一个 Keyed JSON 选项,在解析后收到这个输出:
{
"123456789100:LogGroup1": {
"index": "index1",
"source": "Account1-123456789100:LogGroup1"
},
"123456789100:LogGroup2": {
"index": "index1",
"source": "Account1-123456789100:LogGroup2"
},
"678901234200:LogGroup3": {
"index": "index2",
"source": "Account2-678901234200:LogGroup3"
},
"678901234200:LogGroup4": {
"index": "index2",
"source": "Account2-678901234200:LogGroup4"
}
}
如何使用 Python 实现此目的,因为每次打开此网站并进行转换是不可行的?
如果您首先将“_key”列设置为 pandas 数据框的索引,这应该可以实现您想要的(如果我正确解释了您的问题)。
import pandas as pd
my_data = pd.DataFrame.from_dict({
"0":{
"_key":"123456789100:LogGroup1",
"index":"index1",
"source":"Account1-123456789100:LogGroup1"
},
"1":{
"_key":"123456789100:LogGroup2",
"index":"index1",
"source":"Account1-123456789100:LogGroup2"
},
"2":{
"_key":"678901234200:LogGroup3",
"index":"index2",
"source":"Account2-678901234200:LogGroup3"
},
"3":{
"_key":"678901234200:LogGroup4",
"index":"index2",
"source":"Account2-678901234200:LogGroup4"
}
}, orient="index")
my_dict = my_data.set_index("_key").to_json(orient='index',indent=4)
输出:
{
"123456789100:LogGroup1":{
"index":"index1",
"source":"Account1-123456789100:LogGroup1"
},
"123456789100:LogGroup2":{
"index":"index1",
"source":"Account1-123456789100:LogGroup2"
},
"678901234200:LogGroup3":{
"index":"index2",
"source":"Account2-678901234200:LogGroup3"
},
"678901234200:LogGroup4":{
"index":"index2",
"source":"Account2-678901234200:LogGroup4"
}
}