我希望合并两个数据文件,一个CSV和一个XML,并合并一些过滤器以删除不必要的数据。
两个数据集都引用具有唯一标识符“名称”的同一项目。
例如,在CSV文件中,它看起来像:
No Name X Y Z L* a* b* C* h R G B
1 Item 8kp395185-Standard A 9.37 8.66 5.68 35.32 9.94 13.38 16.67 53.39 75.43 52.24 31.4
2 Item 8kp395185-Standard B 6.44 6.1 6.11 29.67 7.13 1.79 7.35 14.13 48.9 38.11 35.57
3 Item 8kp395185- 3.18 2.74 2.02 18.96 10.56 7.12 12.74 33.98 27.68 15.89 7.9
4 Item 8KP373606-Standard A 9.44 8.72 5.72 35.45 9.95 13.41 16.7 53.42 75.88 52.59 31.7
5 Item 8KP373606-Standard B 6.49 6.15 6.15 29.8 7.12 1.84 7.36 14.46 49.28 38.45 35.84
6 Item 8KP373606- 2.83 2.52 1.97 17.99 8.54 5.85 10.35 34.4 23.64 14.98 8.02
我希望输出一个新的csv文件,该文件的所有列都存在于原始CSV文件中,而XML文件中只有最后一列“ Percentage”,以便每个项目的“名称”部分匹配。从上面的代码中可以看到,“名称”下有三个条目,它们的代码均为“ 8kp395185”。这些条目中有两个在其后写有“ Standard”(标准),这只是为了确保一切正常,我想要的实际条目是第三个条目。这将需要进行过滤,以便XML文件中的百分比仅写在该第三个条目旁边(名称中没有Standard的条目)。
在XML文件中,每个样本都有两个条目。一个的MinL为0,一个的MinL为30。我只希望MinL的百分比为30。
XML文件如下:
<CustomResults>
<Operation>
<Result>
<Name>8KP395185</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.35</MidL>
<MidC>13.64</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.88%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>34.56</MidL>
<MidC>16.50</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.12%</Percentage>
</Region>
</Result>
<Result>
<Name> 8KP373606</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>16.24</MidL>
<MidC>10.90</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.19%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>34.08</MidL>
<MidC>15.57</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.81%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KP376661</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>16.24</MidL>
<MidC>10.90</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.19%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>34.08</MidL>
<MidC>15.57</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.81%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KP368206</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>16.24</MidL>
<MidC>11.15</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.43%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.73</MidL>
<MidC>15.22</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.57%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA156325</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>15.72</MidL>
<MidC>10.47</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.61%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.75</MidL>
<MidC>14.72</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.39%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA156325</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>15.72</MidL>
<MidC>10.47</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.61%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.75</MidL>
<MidC>14.72</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.39%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KP632263</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>15.72</MidL>
<MidC>10.47</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.61%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.75</MidL>
<MidC>14.72</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.39%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8IP160338</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KP464202</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA152000</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA158546</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA154321</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA158545</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA154481</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA152008</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KA151998</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>17.26</MidL>
<MidC>10.74</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>98.70%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.18</MidL>
<MidC>11.88</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>1.30%</Percentage>
</Region>
</Result>
<Result>
<Name>ITEM 8KP638735</Name>
<Region>
<MinL>0.00</MinL>
<MinC>0.00</MinC>
<MidL>15.62</MidL>
<MidC>10.82</MidC>
<MaxL>30.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>99.27%</Percentage>
</Region>
<Region>
<MinL>30.00</MinL>
<MinC>0.00</MinC>
<MidL>33.47</MidL>
<MidC>15.59</MidC>
<MaxL>60.00</MaxL>
<MaxC>100.00</MaxC>
<Percentage>0.73%</Percentage>
</Region>
</Result>
</Operation>
</CustomResults>
所以我认为这个问题涉及: 包含CSV 1)导入熊猫(以使用数据框) 2)读取CSV 包含XML 3)导入ElementTree(将XML文件转换为Dataframe) 4)解析XML文件 5)使用循环函数为XML文件的每次迭代获取“名称”和“百分比”,以创建一个数据框,但过滤掉MinL = 0。
合并文件 6)使用名称作为唯一标识符组合数据集,并在CSV条目中过滤出“标准”。这需要使用部分匹配来完成,因为就大小写匹配而言,并非所有名称都完全相同。但是诸如8kp638735之类的代码将完全匹配,但可能之前已编写了Item或ITEM等。
我是编码和Python的初学者,但是已经尝试并成功读取了CSV文件,但到目前为止还没有列出XML文件的内容。
CSV文件:
import pandas as pd
import numpy as np
data = pd.read_csv("Test_Data.csv")
display(data)
XML文件:
import xml.etree.ElementTree as ET
tree = ET.parse('020219.xml')
root = tree.getroot()
dfcols = ['Name', 'Percentage']
df = pd.DataFrame(columns=dfcols)
for i in tree.iter(tag='Result'):
df = df.append(
pd.Series([i.get('Name'), i.get('Perentage')], index=dfcols),
ignore_index=True)
df.head()
CSV文件:
No Name X Y Z L* a* b* C* h R G B
0 1 Item 8kp395185-Standard A 9.37 8.66 5.68 35.32 9.94 13.38 16.67 53.39 75.43 52.24 31.4
1 2 Item 8kp395185-Standard B 6.44 6.1 6.11 29.67 7.13 1.79 7.35 14.13 48.9 38.11 35.57
2 3 Item 8kp395185- 3.18 2.74 2.02 18.96 10.56 7.12 12.74 33.98 27.68 15.89 7.9
3 4 Item 8KP373606-Standard A 9.44 8.72 5.72 35.45 9.95 13.41 16.7 53.42 75.88 52.59 31.7
4 5 Item 8KP373606-Standard B 6.49 6.15 6.15 29.8 7.12 1.84 7.36 14.46 49.28 38.45 35.84
5 6 Item 8KP373606- 2.83 2.52 1.97 17.99 8.54 5.85 10.35 34.4 23.64 14.98 8.02
6 7 Item 8KP376661-Standard A 9.46 8.76 5.69 35.52 9.81 13.7 16.85 54.39 76.08 52.91 31.4
7 8 Item 8KP376661-Standard B 6.54 6.21 6.15 29.95 7 2.09 7.3 16.63 49.66 38.9 35.79
8 9 Item 8KP376661- 2.78 2.47 1.92 17.77 8.6 5.92 10.44 34.55 23.26 14.65 7.67
9 10 Item 8kp368206-Standard A 9.41 8.7 5.71 35.4 9.96 13.41 16.7 53.41 75.72 52.46 31.57
10 11 Item 8kp368206-Standard B 6.46 6.13 6.12 29.74 7.12 1.85 7.36 14.56 49.1 38.3 35.66
11 12 Item 8kp368206- 2.84 2.51 1.97 17.98 8.85 5.85 10.61 33.47 23.89 14.87 8.01
12 13 Item 8kp464207-Standard A 9.41 8.7 5.69 35.4 9.93 13.47 16.73 53.59 75.72 52.48 31.48
13 14 Item 8kp464207-Standard B 6.46 6.13 6.12 29.75 7.09 1.88 7.33 14.88 49.11 38.34 35.63
14 15 Item 8kp464207- 2.78 2.45 1.91 17.68 9.02 5.89 10.77 33.13 23.47 14.41 7.63
15 16 Item 8KA156325-Standard A 9.32 8.61 5.64 35.23 9.96 13.4 16.69 53.38 75.16 51.98 31.14
16 17 Item 8KA156325-Standard B 6.4 6.07 6.07 29.58 7.12 1.82 7.35 14.34 48.66 37.9 35.31
17 18 Item 8KA156325- 2.65 2.34 1.89 17.2 8.56 5.19 10.01 31.22 22.1 13.82 7.85
18 19 Item 8KP632263-Standard A 2.65 8.65 5.67 35.3 9.98 13.4 16.7 53.33 75.44 52.19 31.35
19 20 Item 8KP632263-Standard B 6.43 6.1 6.09 29.66 7.11 1.85 7.35 14.56 48.88 38.11 35.47
20 21 Item 8KP632263- 2.73 2.44 1.95 17.66 8.08 5.49 9.77 34.22 22.55 14.61 8.01
21 22 Item 8IP160338-Standard A 9.29 8.58 5.62 35.16 9.98 13.38 16.69 53.29 74.98 51.8 31.02
22 23 Item 8IP160338-Standard B 6.38 6.05 6.05 29.54 7.11 1.82 7.34 14.36 48.52 37.81 35.21
23 24 Item 8IP160338- 3.15 2.82 2.26 19.31 8.5 5.61 10.18 33.42 26.21 16.95 9.97
24 25 Item 8KP464202-Standard A 9.31 8.6 5.64 35.21 9.97 13.38 16.68 53.31 75.13 51.94 31.14
25 26 Item 8KP464202-Standard B 6.4 6.06 6.06 29.57 7.13 1.82 7.35 14.31 48.63 37.87 35.29
26 27 Item 8KP464202- 2.74 2.42 1.88 17.53 8.98 5.91 10.75 33.34 23.15 14.21 7.43
27 28 Item 8KA152000-Standard A 9.33 8.62 5.65 35.25 9.98 13.39 16.7 53.31 75.26 52.03 31.21
28 29 Item 8KA152000-Standard B 6.41 6.07 6.08 29.6 7.13 1.82 7.35 14.3 48.72 37.95 35.37
29 30 Item 8KA152000- 2.78 2.51 2.02 17.98 7.69 5.38 9.38 34.99 22.8 15.18 8.52
30 31 Item 8KA158546-Standard A 9.33 8.63 5.65 35.25 9.96 13.4 16.69 53.38 75.26 52.06 31.22
31 32 Item 8KA158546-Standard B 6.4 6.07 6.07 29.59 7.12 1.82 7.35 14.34 48.69 37.93 35.34
32 33 Item 8KA158546- 2.48 2.33 2.06 17.12 5.6 3.56 6.63 32.43 19.29 14.38 9.64
33 34 ITEM 8KA154321-Standard A 9.35 8.63 5.66 35.27 9.99 13.38 16.7 53.24 75.33 52.07 31.29
34 35 ITEM 8KA154321-Standard B 6.41 6.08 6.08 29.61 7.14 1.81 7.36 14.24 48.75 37.97 35.4
35 36 ITEM 8KA154321- 2.75 2.46 2 17.75 8.2 5.16 9.69 32.15 22.8 14.68 8.51
36 37 ITEM 8KA158545-Standard A 9.39 8.69 5.67 35.38 9.91 13.54 16.78 53.82 75.66 52.45 31.3
37 38 ITEM 8KA158545-Standard B 6.48 6.15 6.12 29.78 7.05 1.94 7.32 15.38 49.19 38.45 35.62
38 39 ITEM 8KA158545- 2.51 2.37 2.1 17.3 5.39 3.51 6.43 33.05 19.43 14.69 9.93
39 40 ITEM 8KA154481-Standard A 9.35 8.64 5.67 35.29 9.95 13.39 16.68 53.36 75.36 52.16 31.33
40 41 ITEM 8KA154481-Standard B 6.42 6.08 6.08 29.62 7.13 1.82 7.36 14.31 48.78 38 35.41
41 42 ITEM 8KA154481- 2.52 2.35 2.02 17.23 6.08 4.09 7.32 33.93 19.91 14.43 9.13
42 43 ITEM 8KA154268-Standard A 9.35 8.64 5.67 35.28 9.98 13.37 16.68 53.26 75.35 52.12 31.34
43 44 ITEM 8KA154268-Standard B 6.42 6.08 6.08 29.62 7.13 1.82 7.36 14.33 48.78 38 35.41
44 45 ITEM 8KA154268- 2.92 2.64 2.05 18.56 7.72 6.12 9.86 38.42 24.01 16.06 8.34
45 46 ITEM 8KA152008-Standard A 9.42 8.72 5.69 35.43 9.9 13.54 16.77 53.84 75.82 52.59 31.43
46 47 ITEM 8KA152008-Standard B 6.49 6.16 6.14 29.82 7.07 1.94 7.33 15.35 49.31 38.54 35.72
47 48 ITEM 8KA152008- 2.76 2.53 2.05 18.04 7.07 5.17 8.76 36.2 22.32 15.41 8.81
48 49 ITEM 8KA151998-Standard A 9.4 8.69 5.68 35.39 9.92 13.53 16.77 53.75 75.7 52.47 31.36
49 50 ITEM 8KA151998-Standard B 6.48 6.15 6.13 29.79 7.08 1.93 7.34 15.27 49.24 38.45 35.65
50 51 ITEM 8KA151998- 2.91 2.63 2.05 18.48 8.01 5.96 9.98 36.65 24.1 15.85 8.45
51 52 ITEM 8KA151998-Standard A 9.36 8.65 5.67 35.3 9.96 13.4 16.7 53.36 75.43 52.2 31.35
52 53 ITEM 8KA151998-Standard B 6.43 6.1 6.1 29.66 7.13 1.82 7.36 14.33 48.89 38.09 35.51
53 54 ITEM 8KA151998- 2.92 2.62 2.06 18.47 8.1 5.9 10.02 36.09 24.16 15.81 8.51
54 55 ITEM 8KP638735-Standard A 9.31 8.6 5.65 35.21 9.98 13.34 16.66 53.22 75.12 51.93 31.2
55 56 ITEM 8KP638735-Standard B 6.38 6.05 6.06 29.54 7.12 1.79 7.34 14.09 48.54 37.81 35.28
56 57 ITEM 8KP638735- 2.72 2.41 1.86 17.49 8.77 5.94 10.59 34.13 22.87 14.2 7.33
这如预期的那样出来。
XML输出:
Name Percentage
0 None None
1 None None
2 None None
3 None None
4 None None
5 None None
6 None None
7 None None
8 None None
9 None None
10 None None
11 None None
12 None None
13 None None
14 None None
15 None None
16 None None
17 None None
这将为条目返回None,而不是数据。另外,我还没有包括任何过滤器来删除MinL = 0的条目,但是一旦返回数据列表,我就可以查看过滤了。