根据其他列值编辑列值

2024-09-28 10:11:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas.DataFrame,我需要根据两列中的值更新它,这些列中的值来自需要的列。我知道这是不好的做法。这只是一个例子。在

以下是我正在使用的示例:

import re
import pandas as pd

def anydigit(text):
    find_digit = re.search(r'\d+', text)
    if find_digit:
        return find_digit.start()
    else:
        return 0

df = pd.DataFrame({'DPID': ['A1', 'A2'], 'NAME': ['John Doe', 'Jane Doe'],
                   'ADDR_1': ['123 MAIN ST', 'ATTN: JOHN DOE'], 'ADDR_2': ['', 'P O BOX 123456']})
df['addr_ad1'] = df['ADDR_1'].apply(anydigit)
df['addr_ad2'] = df['ADDR_2'].apply(anydigit)
df['AUX_ADDR_LINE'] = ''

这就是需要发生的事情。在

^{pr2}$

我认为.apply()会起作用,但不确定如何编写它。在


Tags: textimportredataframepandasdfreturnfind
1条回答
网友
1楼 · 发布于 2024-09-28 10:11:50

调整了一些变量名:

def anydigit(text):
    find_digit = re.search(r'\d+', text)
    if find_digit:
        return find_digit.start()
    else:
        return 0

df = pd.DataFrame({'DPID': ['A1', 'A2'], 'NAME': ['John Doe', 'Jane Doe'],
                   'addr_1': ['123 MAIN ST', 'ATTN: JOHN DOE'], 'addr_2': ['', 'P O BOX 123456']})
df['addr_ad1'] = df['addr_1'].apply(anydigit)
df['addr_ad2'] = df['addr_2'].apply(anydigit)
df['aux_addr_line'] = ''

首先:

^{pr2}$

定义一个函数,然后apply到所有行:

^{3}$

获得:

  DPID      NAME          addr_1 addr_2  addr_ad1  addr_ad2   aux_addr_line
0   A1  John Doe     123 MAIN ST                0         0                
1   A2  Jane Doe  P O BOX 123456                0         8  ATTN: JOHN DOE

相关问题 更多 >

    热门问题