2
我有一個pandas.DataFrame
,我需要根據需要更新的列中的值根據列中的值進行更新。 NAME被命名爲別的,因爲我知道這是不好的做法。這只是例子。根據其他列值編輯列值
以下是我與工作的一個樣本:
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'] = ''
這是需要採取什麼措施。
If addr_ad1 == 0 and addr_ad2 > 0:
aux_addr_line = addr_1
addr_1 = addr_2
addr_2 = ''
elfif addr_ad1 > 0 and re.sub(r'\s+', '', addr_2)[:4] == 'POBOX':
aux_addr_line = ''
addr_1 = addr_1
addr_2 = ''
elif addr_ad2 > 0 and re.sub(r'\s+', '', addr_1)[:4] == 'POBOX':
aux_addr_line = ''
addr_1 = addr_2
addr_2 = ''
我會認爲.apply()
會工作,但不知道我會怎麼寫。
這正是我所期待的!我從數據框中刪除了addr_ad1和addr_ad2列,因爲它們只用於計算。我將它們添加到函數中,如下所示:addr_ad1 = anydigit(row.addr_1)。謝謝! –
不客氣。 – Stefan