gpt4 book ai didi

python - For循环根据指定值排除一些DataFrame行

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:19 25 4
gpt4 key购买 nike

我有一个包含 10000 多个文件的文件夹,其中包含 10 个变量(X1、X2、...、X10)的数据。

文件的名称只是 File1.json、File2.json 等。

我需要为每个变量创建一个数据框,即 10 个数据框。

输入

  • 变量= [X1, X2, ..., X10]
  • FILES= [File1.json, File2.json, ... File14347.json]

期望的输出

  • X1, X2, ..., X10 的数据框

我正在做以下事情

for i in range(0, len(VARIABLES)):
%reset_selective -f "^DATA$"
DATA=pd.DataFrame()
Data_name=VARIABLES[i]
print(Data_name)
for ii in range(0, len(FILES)):

file_name1='Directory/'
file_name2= FILES[ii]
file_name=file_name1+file_name2
with open(file_name, 'r') as fer:
data1 = json.load(fer)
df = pd.DataFrame({'count': data1})

Var_namei=df['count']['consistname']
if Var_namei==Data_name:
#create Dataframe

代码对于第一个变量工作正常,因为我不知道哪些文件包含 X1 的数据。

但是,从第二次迭代开始,重新打开每个文件以查找 X2 的数据就没有意义了。同样,当我到达最后一次迭代时,我应该只打开 X10 的文件。

我想避免打开/考虑其数据已用作 DataFrame 输入的文件,例如File2 包含 X1 的值,因此我不想在查找 X2、X3 等的值时再次打开 File2

我试过添加

k.iloc[ii,i]= ii

其中 k 是 if 条件后的零大小 (File, VAriable) 的数据帧,以便在打开变量 i 的文件 ii 时在 i 列和 ii 行中放置 1。这样,我可以在接下来的迭代中跳过这样的 ii 行文件。但是,我无法在 for 循环期间访问 k 值。

有什么建议吗?谢谢

最佳答案

欢迎来到 SO。如果稍微重构一下,您的代码会简单得多。

file_name1='Directory/'
FileDATA={}
for file_name2 in FILES:
file_name=file_name1+file_name2
with open(file_name, 'r') as fer:
data1 = json.load(fer)
if data1['consistname'] in VARIABLES:
# Save the data1 object to FileDATA
# Assuming that every element in VARIABLES is unique
Data_name=data1['consistname']
FileDATA[Data_name] = data1

for Data_name in VARIABLES:
data1 = FileDATA[Data_name]
df = pd.DataFrame({'count': data1})
# create Dataframe

第一个循环遍历所有文件一次,并将对应于 [X1, X2, ..., X10] 变量的数据保存在字典 FileDATA 中.然后您可以遍历变量来处理数据。

删除不需要的行后,

FileDATA={}
for file_name2 in FILES:
with open('Directory/' + file_name2, 'r') as fer:
data1 = json.load(fer)
if data1['consistname'] in VARIABLES:
FileDATA[data1['consistname']] = data1

for Data_name in VARIABLES:
df = pd.DataFrame({'count': FileDATA[Data_name]})
# create Dataframe

关于python - For循环根据指定值排除一些DataFrame行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54806806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com