[英]Match each dictionary value with csv column entry and apply dictionary key to new column
我想將字典值與 csv dataframe 列中的條目進行匹配,並將相應的字典鍵放入新列中。
我有一個 csv dataframe,帶有一個鏈接和六列數字。 我有一本包含網站和許多鏈接的字典。
import pandas as pd
# reproducible data
data = {'Link': ['A1', 'B2', 'X7', '8G'],
'Town1': [0.124052256, 0.939612252, 0.861338299, 0.981016558],
'Town2': [0.605572804, 0.561737172, 0.479567258, 0.476371433],
'Town3': [0.41687511, 0.321543551, 0.1243927, 0.097894068],
'Town4': [0.068305033, 0.280721459, 0.600126058,0.93097328]}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
df
#Dictionary
d = {'Sample1': '[A1, 6H, 8J, A3, 4L]', 'Sample2': '[X7, 8G, 4R]', 'Sample3': '[B2, V6, 8U]' }
###我想要的是找到字典值和“鏈接”列中的條目匹配的位置,並使用字典鍵在同一個 csv 文件上創建一個新列。
這是我嘗試過的,它在新列中返回 None
def get_key(node):
for node in df['Link']:
if node in d.values():
return d.keys()
df['Parent'] = df['Link'].apply(lambda x: get_key(x))
df
我想要的最后一件事是 to.groupby.sum() df['Parent'] 列並制作最終的 pivot 樣本表和每個“城鎮”列中的總和。
決賽桌示例:
def matcher(find_this_value):
your_dict = {'Sample1': ['A1', '6H', '8J', 'A3', '4L'], 'Sample2': ['X7', '8G', '4R'], 'Sample3': ['B2', 'V6', '8U']}
for key, values in your_dict.items():
for value in values:
if find_this_value in value:
return key
df['dict_key'] = df['Link'].apply(matcher)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.