问题: 我正在开发一个 Python 项目,其中有一个包含两列的数据集:“大列表”和“小列表”。我的目标是将“小列表”列中的值与“大列表”列中的值进行比较,并相应地对它们进行排序。如果在“大列表”列中找到“小列表”列中的值,我想对“小列表”列中的相应行进行排序。此外,如果在“大列表”列中找不到“小列表”列中的值,我想将其列出在名为“与大列表不匹配”的新列中。
“大列表”中的值不唯一,但“小列表”中的值是唯一的。
这是一个例子:
大名单 | 小名单 |
---|---|
10 | 17 号 |
2 | 15 |
15 | 42 |
17 号 | 31 |
30 | 45 |
40 | 30 |
45 | |
47 | |
50 |
在本例中,我想将“小列表”列中的每个值与“大列表”列中的值进行比较。如果找到匹配项,我想对“小列表”列中的相应行进行排序。如果未找到匹配项,我想在“与大列表不匹配”列中列出该值。
预期结果:
大名单 | 小名单 | 与大列表不匹配 |
---|---|---|
10 | 31 | |
2 | 42 | |
15 | 15 | |
17 号 | 17 号 | |
30 | 30 | |
40 | ||
45 | 45 | |
47 | ||
50 |
我正在努力解决如何在找到匹配项时对“小列表”列中的行进行排序以及如何在没有匹配项时填充“不匹配到大列表”列。任何有关如何实现这一目标的帮助或建议将不胜感激!
这是我到目前为止的代码:
import pandas as pd
data = {'Big List': [10,2,15,17,30,40,45,47,50], 'Small List': [17,15,42,31,45,30]}
df = pd.DataFrame(data)
# Loop through rows and compare values
for index, row in df.iterrows():
if row['Small List'] in df['Big List']:
# Sort the row in the "Small List" column
# Stuck here
else:
# Add value to "Not Matched to Big List" column
# Stuck here
print(df)
给你(尽管我必须补充一点,这个解决方案相当麻烦,因为 Pandas 数据框应该表达不同列之间的关系,而这里所做的却没有):
另一个解决方案:
印刷: