Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全球环境python词典_Python_Pandas_Dictionary - Fatal编程技术网

全球环境python词典

全球环境python词典,python,pandas,dictionary,Python,Pandas,Dictionary,我尝试使用python在循环中打开cvs文件列表。我开始的想法是将文件打开到字典中,因为有人告诉我不要尝试动态创建名称,我尝试了以下代码 加载所有csv文件 创建三个数据帧的列表:数据帧 在这之前,一切都很顺利。 注意-我的问题发生在这里,这里的结果只是两个数据帧中的一个 我能直接从循环中打开这个csv文件并动态命名它们吗?我有大约20个csv,我正在尝试自动化一点代码。tks 编辑问题以便于支持 创造词汇 传递到数据帧 创建数据帧列表 创建数据帧字典 从数据帧字典回到数据帧(这里是我失败的地方

我尝试使用python在循环中打开cvs文件列表。我开始的想法是将文件打开到字典中,因为有人告诉我不要尝试动态创建名称,我尝试了以下代码

加载所有csv文件 创建三个数据帧的列表:数据帧 在这之前,一切都很顺利。 注意-我的问题发生在这里,这里的结果只是两个数据帧中的一个

我能直接从循环中打开这个csv文件并动态命名它们吗?我有大约20个csv,我正在尝试自动化一点代码。tks

编辑问题以便于支持 创造词汇 传递到数据帧 创建数据帧列表 创建数据帧字典 从数据帧字典回到数据帧(这里是我失败的地方,为什么?)
我认为需要
dict comprehension
,以便按文件名使用键的数据帧字典:

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 = {'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}
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}
对于
数据帧
键选择
-或按
文件1

print (dataframes['file1'])
   A  B
0  a  0
1  a  1
循环中的
v
DataFrame

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'>
print (dataframes['file1'])
    A  B
0  aa  0
1  aa  1
数据帧字典:

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}
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}
选中一个数据帧:

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'>
print (dataframes['file1'])
    A  B
0  aa  0
1  aa  1

所有csv文件的内容是否相同?为什么不循环
data\u list
并使用单独的数据帧,如果愿意,您可以将它们合并。
[k]=pd.dataframe.from_dict(dataframes[k])
为什么要用括号括住
k
?你想在这里干什么?还有。。。为什么
要读两遍csv,然后从目录中
。。。你不能停在
dfs={fname:pd.read_csv(fname)for fname in filenames}
?你的第二个循环有什么意义?为什么要将数据帧传递给
pd.DataFrame.from_dict
?@我最初尝试在循环中创建数据帧,但没有成功。但当我试着把所有的东西都传给字典时,我成功了。但后来我想,好吧,我怎么知道打开这本数据帧字典…一次成功就有两个技巧:)我的大问题是;假设我在一本字典中有10个数据帧,如何将所有10个数据帧单独解包到全局环境中?@Ian_De_Oliveira-hmm,为什么有必要?您需要将所有
10
连接在一起吗?因为如果使用
dataframes['ISCOGroups\u en.csv']
就像
df
,请通过
print(键入(dataframes['ISCOGroups\u en.csv'])检查它
像往常一样谢谢。我今天上午会尝试,不需要将它们连接在一起。我更感兴趣的是如何从循环中的数据帧字典中提取df。@Ian_De_Oliveira-我尝试用示例数据解释更多内容,如果仍然不清楚,请告诉我。
print (dataframes['file1'])
   A  B
0  a  0
1  a  1
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'>
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}
print (dataframes['file1'])
    A  B
0  aa  0
1  aa  1