gpt4 book ai didi

python - 字典到全局环境python

转载 作者:行者123 更新时间:2023-12-01 09:08:28 25 4
gpt4 key购买 nike

我尝试使用 python 在循环中打开 cvs 文件列表。我开始考虑将文件打开到字典中,因为我被告知不要尝试动态创建名称,我尝试了以下代码

加载所有 csv 文件

 filenames = ["broaderRelationsSkillPillar.csv","ISCOGroups_en.csv"]

dataframes ={} ## create a dictionary

创建三个 DataFrame 的列表:dataframes

for i in filenames :
dataframes[i] = pd.read_csv(i)

直到这里一切都顺利进行。

for k ,v in dataframes.items():
[k] = pd.DataFrame.from_dict(dataframes[k])

注意 - 我的问题发生在这里,我的结果只是 2 个数据帧之一

我可以直接从循环中打开此 csv 文件并即时命名它们吗?我有大约 20 个 csv,我正在尝试使代码自动化一些。谢了

已编辑问题以方便支持

创建字典

d = {'col1': [1, 2], 'col2': [3, 4]} 
a = {'col3': [1, 2], 'col4': [3, 4]}
c = {'col3': [1, 2], 'col4': [3, 4]}

传递到数据框

d= pd.DataFrame(data=d)
a= pd.DataFrame(data=a)
c= pd.DataFrame(data=c)

创建数据帧列表

filenames = [a ,d ,c]

创建数据帧字典

dataframes ={}    ## create a dictionary 

for i in filenames :
dataframes[i] = i

del a , c, d

从数据帧字典返回数据帧(这是我失败的地方,为什么?)

for k ,v in dataframes.items():
k = pd.from_dict(dataframes[k])

最佳答案

我相信需要对带有文件名键的 DataFrame 字典进行字典理解:

dataframes = {i:pd.read_csv(i) for i in filenames}
print (dataframes['broaderRelationsSkillPillar.csv'])
print (dataframes['ISCOGroups_en.csv'])

或者可以通过索引删除最后一个.csv:

dataframes = {i[:-4]: pd.read_csv(i) for i in filenames}
print (dataframes['broaderRelationsSkillPillar'])
print (dataframes['ISCOGroups_en'])
<小时/>

示例数据帧:

df1 = pd.DataFrame({'A': ['a','a'],'B': list(range(2))})
df2 = pd.DataFrame({'C': ['b','f','s'],'D': list(range(3))})
df3 = pd.DataFrame({'E': ['f','g','h'],'F': list(range(3))})
print (df1)
A B
0 a 0
1 a 1

print (df2)
C D
0 b 0
1 f 1
2 s 2

print (df3)
E F
0 f 0
1 g 1
2 h 2

创建了DataFrames字典:

dataframes = {'file1':df1, 'file2':df2, 'file3':df3}
print (dataframes)
{'file1': A B
0 a 0
1 a 1, 'file2': C D
0 b 0
1 f 1
2 s 2, 'file3': E F
0 f 0
1 g 1
2 h 2}

对于DataFrame,通过key选择 - ere通过file1:

print (dataframes['file1'])
A B
0 a 0
1 a 1

循环中vDataFrame:

for k ,v in dataframes.items():
print (k)
print (v)
print (type(v))
file1
A B
0 a 0
1 a 1
<class 'pandas.core.frame.DataFrame'>
file2
C D
0 b 0
1 f 1
2 s 2
<class 'pandas.core.frame.DataFrame'>
file3
E F
0 f 0
1 g 1
2 h 2
<class 'pandas.core.frame.DataFrame'>

如果要在循环中修改DataFrames,则需要使用dictionarykey引用原始的df :

for k ,v in dataframes.items():
#modify df - e.g. add `a` to first column
v.iloc[:, 0] = v.iloc[:, 0] + 'a'
print (v)
dataframes[k] = v
A B
0 aa 0
1 aa 1
C D
0 ba 0
1 fa 1
2 sa 2
E F
0 fa 0
1 ga 1
2 ha 2

数据帧字典:

print (dataframes)
{'file1': A B
0 aa 0
1 aa 1, 'file2': C D
0 ba 0
1 fa 1
2 sa 2, 'file3': E F
0 fa 0
1 ga 1
2 ha 2}

检查一个DataFrame:

print (dataframes['file1'])
A B
0 aa 0
1 aa 1

关于python - 字典到全局环境python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51854735/

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