[英]Is there a way in pandas to create an integer in a new column if a row contains a specific string
[英]Replicate contains string on row and move with specific result to new column Pandas python
我需要将行的特定选定值移动到仅具有选定值的新列,我需要什么方法来做到这一点? 例如,我只需要将包含'KOTA|KAB'
的所选值添加到新列中,从这种情况下,什么
我有一些数据:
+---------------------------------------------+
| A |
+---------------------------------------------+
| JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135 |
| JL XXXX, KEC PORONG KAB SIDOARJO 61274 |
| DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471 |
+---------------------------------------------+
我只需要获取特定值并移至新列,我期望的是这样
+---------------------------------------------+----------------------+
| A | B |
+---------------------------------------------+----------------------+
| JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135 | KOTA SURABAYA |
| JL XXXX, KEC PORONG KAB SIDOARJO 61274 | KAB SIDOARJO |
| DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471 | KAB BANYUWANGI |
+---------------------------------------------+----------------------+
我尝试了什么:
# initialize list of lists
testing = [['JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135'],
['JL XXXX, KEC PORONG KAB SIDOARJO 61274'],
['DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471']]
# Create the pandas DataFrame
df_test = pd.DataFrame(testing, columns=['A'])
for check in df_test['A']:
test = re.sub(r'(\bKOTA\b)|(\bKAB\b)', '', check)
print(test)
但上面的结果将删除 KOTA 和 KAB
假设您要提取 KOTA/KAB 和以下单词(数字除外),您可以使用:
df_test['B'] = df_test['A'].str.extract(r'(\b(?:KOTA|KAB)\b\D+\b)')
输出:
A B
0 JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135 KOTA SURABAYA
1 JL XXXX, KEC PORONG KAB SIDOARJO 61274 KAB SIDOARJO
2 DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471 KAB BANYUWANGI
使用re.sub
从字符串中删除了与模式匹配的文本。
您可以将单个捕获组与str.extract
一起使用,例如:
testing = [['JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135'],
['JL XXXX, KEC PORONG KAB SIDOARJO 61274'],
['DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471']]
# Create the pandas DataFrame
df_test = pd.DataFrame(testing, columns=['A'])
df_test['B'] = df_test["A"].str.extract(r'\b((?:KOTA|KAB) \w+)')
print (df_test)
输出
A B
0 JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135 KOTA SURABAYA
1 JL XXXX, KEC PORONG KAB SIDOARJO 61274 KAB SIDOARJO
2 DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471 KAB BANYUWANGI
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.