我正在尝试编写python脚本。根据要求,我将有大约400列,这些列将根据JSON文件中的多个数组出现。
我正在使用Pandas库和python 3.6版。我可能从JSON文件中获得的列多于400列。我如何限制不需要的列,而我只想在python输出文件中获取指定的列。
我正在使用以下代码按指定列获取数据。
问题:在我的输出文件中,除了列列表文件中提到的列之外,我还获取了其余的列。如何限制不需要的列并仅在输出中获得必需的列?
with open('Columns.txt') as c:
columns_list = c.readlines()
with open('JsonFile.json') as f:
json_file = json.load(f)
df = pd.DataFrame(columns=columns_list)
,我还有一个场景。.目前,我的数据如下示例数据。
我有70%的案例具有[attributes] [ABC] [Values] [Value]之类的数据,而在其余案例中,我具有[attributes] [Xdfghgjgjgj] [grp](这里有2条记录)。要处理这种类型的方案多值属性,您可以帮我一些解决方案
{
"entities": [
{
"id": "XXXXXXXXXXXXXXX",
"data": {
"attributes": {
"ABC": {
"values": [
{
"value": 00000000000000
}
]
}
"Xdfghgjgjgj": {
"grp": [
{
"SUPP": {
"values": [
{
"value": "000000000000000000"
}
]
},
"yfyfyfyfyfy": {
"values": [
{
"value": "909000090099090"
}
]
},
},
{
"SUPP": {
"values": [
{
"value": "000000000000000000"
}
]
},
"yfyfyfyfyfy": {
"values": [
{
"value": "909000090099090"
}
]
},
}
]
}
}
答案 0 :(得分:0)
有一种方法可以使用pandas从csv中读取特定的列:
import pandas as pd
cols= ['col1', 'col2', 'col3']
df = pd.read_csv('JsonFile.csv', skipinitialspace=True, usecols=cols)
#save to output
df.to_csv('output.csv',Index=False)
或者您可以在保存文件时指定列:
df = pd.read_csv('JsonFile.csv')
df[column_names].to_csv('output.csv',index=False)
编辑:
with open('Columns.txt') as c:
columns_list = c.readlines()
with open('JsonFile.json') as f:
json_file = json.load(f)
#df = pd.DataFrame.from_dict(json_file, orient='columns')
df = pd.DataFrame(json_file)
df[columns_list].to_csv('output.csv',index=False)