Python 在Pandas中按数据类型处理数据

Python 在Pandas中按数据类型处理数据,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,我有一个包含int和str数据的数据框,我必须对其进行处理 我想将每个单元格中的文本和数值分隔成单独的列,这样我就可以对数值数据进行计算 我的专栏与此类似: 我读过关于通过apply函数和applymap函数来做类似的事情,但是我不能设计这样的函数,因为我对pandas是新手。它基本上应该做到- def separator(): if cell has str: Add str part to another column(Check column), le

我有一个包含int和str数据的数据框,我必须对其进行处理

我想将每个单元格中的文本和数值分隔成单独的列,这样我就可以对数值数据进行计算

我的专栏与此类似:

我读过关于通过apply函数和applymap函数来做类似的事情,但是我不能设计这样的函数,因为我对pandas是新手。它基本上应该做到-

def separator():
       if cell has str:
           Add str part to another column(Check column), leave int inplace.
       else:
           Add 'NA' to Check column     

您可以使用
extract
和后面的
to_numeric
来执行此操作:

import pandas as pd

df = pd.DataFrame({'a_mrk4': ['042FP', '077', '079', '1234A-BC D..EF']})

df[['a_mrk4', 'Check']] = df['a_mrk4'].str.extract(r'(\d+)(.*)')
df['a_mrk4'] = pd.to_numeric(df['a_mrk4'])
print(df)
输出:

   a_mrk4       Check
0      42          FP
1      77            
2      79            
3    1234  A-BC D..EF

您可以使用正则表达式,假设您有一列(target_col),并且数据遵循模式digits+text,那么您可以使用以下列

df.target_col.str.extractall(r'(/d)(/w)')

您可以调整re以符合您的具体需要

请不要在问题中包含图像,而是a。而且总是先int,然后str吗?或者它会在附近吗?那么int值是否实际保存为int?或者作为str?我觉得你所有的数据都是文本,所以我不确定你在问什么。@LeoE我会记住的。@LeoE是的。它总是以int开头,然后是str。值保存为str