gpt4 book ai didi

python - 在子字符串的另一列中过滤和移动文本

转载 作者:行者123 更新时间:2023-12-05 03:17:47 38 4
gpt4 key购买 nike

我有以下数据集:

df = pd.DataFrame([
{'Phone': 'Fax(925) 482-1195', 'Fax': None},
{'Phone': 'Fax(406) 226-0317', 'Fax': None},
{'Phone': 'Fax+1 650-383-6305', 'Fax': None},
{'Phone': 'Phone(334) 585-1171', 'Fax': 'Fax(334) 585-1182'},
{'Phone': None, 'Fax': None},
{'Phone': 'Phone(334) 585-1171', 'Fax': 'Fax(334) 585-1176'}]
)

应该是这样的:

enter image description here

我想做的是:对于我看到“传真”的每一行,我想将其截断并将此记录传输到“传真”列。

起初,我试图只查询具有此过滤条件的匹配项:

df[df['Phone'].str.contains("Fax") == True, "Fax"] = df[df['Phone'].str.contains("Fax") == True]

但它不起作用,出现错误:“TypeError: unhashable type: 'Series'”。

有什么想法吗?

最佳答案

你有一堆行,即字典列表。最简单的方法是按摩每一行在将其添加到数据框之前。

rows = [ ... ]

def get_contacts(rows):
for row in rows:
phone, fax = row['Phone'], row['Fax']
if 'Fax' in phone:
phone, fax = None, phone
yield phone, fax

df = pd.DataFrame(get_contacts(rows))

您可以使用这样的过滤器强制 str 而不是 None:

        ...
yield clean(phone), clean(fax)
...

def clean(s, default=''):
if s is None:
return default
return s

如果您真的更喜欢坚持使用 Pandas,你可能想要

  1. 识别行掩码,其中 df.Phone 包含“Fax”,然后
  2. 将该子集复制到 df['Fax'],然后
  3. 删除选定的 df['Phone'] 条目。

您可以自己验证/调试每个步骤——正确获取 (1)在继续尝试 (2) 之前。

如果您选择走这条路,please post您的最终解决方案。

关于python - 在子字符串的另一列中过滤和移动文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73914589/

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