gpt4 book ai didi

python - 在 pandas 中应用 %LIKE% 进行 vlookup

转载 作者:行者123 更新时间:2023-11-28 22:28:20 25 4
gpt4 key购买 nike

我是 Python 新手,我正在尝试连接两个 CSV 文件(以“;”分隔)

CSV1
Sender;Recipient
Adam;123
Alex;234
John;123
Adam;888

CSV2
Name;Phone
Winnie;123,234,456
Celeste;777,888,999

预期输出:

Sender;Recipient;RecipientName
Adam;123;Winnie
Alex;234;Winnie
John;123;Winnie
Adam;888;Celeste
CSV2 中的

Phone 以逗号分隔。所以我需要在匹配时进行某种搜索或%LIKE%

我知道我可以使用 join 来执行 vlookup 类型,但我怎样才能实现 %LIKE%

最佳答案

  • 使用str.splitPhone列变成列表
  • 使用 str.len() 找出每个列表的长度。我们将使用它来展开 'Name'
  • 将所有这些列表合二为一。确保过滤掉零长度列表
  • 使用repeat来分解'Name'
  • 创建一个字典,键是电话号码,值是名字
  • 创建 d1 的副本,我们在其中使用 map 和我们制作的新字典添加了新列。

p = d2.Phone.str.split(',')
p = p[p.astype(bool)]
l = p.str.len()
p2 = np.concatenate(p.values).astype(int)
nm = d2.Name.repeat(l)
m = dict(zip(p2, nm))

df = d1.assign(RecipientName=d1.Recipient.map(m))
print(df)

Sender Recipient RecipientName
0 Adam 123 Winnie
1 Alex 234 Winnie
2 John 123 Winnie
3 Adam 888 Celeste

df.to_csv('out.csv', sep=';', header=None)

Sender;Recipient;RecipientName
Adam;123;Winnie
Alex;234;Winnie
John;123;Winnie
Adam;888;Celeste

关于python - 在 pandas 中应用 %LIKE% 进行 vlookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com