/**/

我有以下数据集:

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

我try 做的是:对于我看到的每一行"Fax",我想截断它并将该记录转移到"Fax"列.

起初,我试图使用这个过滤器只查询匹配的内容:

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

但它不起作用,并出现错误:"TypeError:unhasable 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

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

  1. 找出df.Phone包含‘Fax’的行的掩码,然后
  2. 将该子集复制到df['Fax'],然后
  3. 删除选定的df['Phone']个条目.

您可以自己验证/调试每个步骤--GET(1)是正确的 在继续try (2)之前.

如果你 Select 走这条路,please post是你的最终解决方案.

Python相关问答推荐

使用条件参数进行类型判断

我如何计算 python 中 csv 文件的总和?

如何根据特定条件对列表项进行分组?

我可以重写这段代码以使其运行得更快吗?

合并Pandas 数据框中具有多个值的列

创建随机布尔数组

比较python和ctypes等效代码的性能

如何根据 Pandas 中的列值 Select 行

如何在python中用'_'屏蔽字符串的一部分

如何根据索引的不同阈值过滤数据帧

下拉菜单按钮不会更新情节时间线图

根据 pandas DataFrame 中的组在列中组合字符串

不执行的 Python 函数列表

Python 在非空值后忽略 DataFrame 行

使用 `sys.stdout.write()` 将标准输出重定向到方法中的变量

Python - 如何合并一个df中的列值以匹配另一个df中的行?

基于与其他列表的交集对列表进行部分排序

使用python获取tif图像中的层数

升级后相当于 tensorflow 2 中的 tf.contrib.legacy_seq2seq.attention_decoder

Python Xbox 设置