我有几个数据文件(从excel)转换成熊猫格式,并包含在字典中。以下是获取数据帧的方法:
dataList = files
nameList = []
for raster in dataList:
path_list = raster.split(os.sep)
name = path_list[5][:-4]
nameList.append(name)
dataDct = {}
for k, v in zip(nameList,dataList):
dataDct[k] = read_excel(v).rename(columns={'Main Value': 'Main Value '+k, 'Auxiliary Value': 'Auxiliary Value '+k})
我用以下方法组合它们:
(字典是dataDct
)
这将输出一个文件,它只将文件一个接一个放在一个长文件中,而不考虑它们共享的公共字段。。。所以很难用它来做进一步的分析。在
以下是dataDct
中包含的数据帧示例:
IN [2]:
value(HIB)
1 CODE VALUE_HIB AUX_VAL_HIB
2 F.F 00000
3 0.0.1
4 0.0.2 06-02-2016
5 C.6 XYZ-21555FFF
6 3.8.0*1 45000GHZ 01.01.2016
Value (HIC)
1 CODE VALUE_HIC AUX_VAL_HIC
2 F.F 00000 111111
3 0.0.1
4 0.0.3 06-02-2016
5 C.6 XYZ-216666FFF
6 3.9.0*1 65000GHZ 01.02.2016
Value (HID)
1 CODE VALUE_HID AUX_VAL_HID
2 F.F 00000 0101010
3 A.1.1 85 GHZ
4 V.1.1 06-02-2016
5 C.6 XYZ-21776FFF
6 3.9.0*1 3000GHZ 01.02.2016
预期输出:
OUT[2]:
1 CODE VALUE_HIB AUX_VAL_HIB VALUE_HIC AUX_VAL_HIC VALUE_HID AUX_VAL_HID
2 F.F 00000 00000 111111 00000 01010101
3 0.0.1
4 0.0.2 06-02-2016
5 0.0.3 06-02-2016
6 A.1.1 85ghz
7 C.6 XYZ-21555FFF XYZ-216666FFF XYZ-21776FFF
8 V.1.1 06-02-2016
9 3.8.0*1 45000GHZ 01.01.2016
10 3.9.0*1 65000GHZ 01.02.2016 3000GHZ 01.02.2016
这个想法是将数据对齐并连接起来。。。 我试过加入轴心国:
concat(dataDct.values(), join='outer', ignore_index=False, axis=1).to_excel(writer, sheet_name='values')
数据的显示效果更好,但没有在相似的值上联接:(只在一个接一个显示的数据帧上联接。。。 以下是错误的输出示例:
1 CODE VALUE_HIB AUX_VAL_HIB VALUE_HIC AUX_VAL_HIC
2 F.F 00000
3 0.0.1
4 0.0.2 06-02-2016
5 C.6 XYZ-21555FFF
6 3.8.0*1 45000GHZ 01.01.2016
F.F 00000 111111
0.0.1
0.0.3 06-02-2016
C.6 XYZ-216666FFF
3.9.0*1 65000GHZ 01.02.2016
有什么想法可以正确的语法组合字典和获得所需的输出?在
嗯,我想你连接错轴了。连接是沿着列进行的,因此每个数据帧都被放在另一个数据帧下。我想您正在寻找沿着行的连接,其中每个数据帧被逐行对齐并与其他数据帧合并,这样您就得到了一个宽表,而不是一个长表。在
尝试:
如果不行就告诉我。如果这不是您要查找的答案,请编辑您的问题以提供Minimal Complete and Verifiable Example。另外,请遵守Pandas question guidelines。在
对我有效的方法是将列
CODE
设置为索引:然后,以下工作如预期:
^{pr2}$如果有
NaN
值,可以通过附加.fillna("")
来删除它们。在编辑:根据您的评论,
CODE
列中似乎有重复的值。一种解决方案是删除重复项:相关问题 更多 >
编程相关推荐