Python 在Pandas中按数据类型处理数据
我有一个包含int和str数据的数据框,我必须对其进行处理 我想将每个单元格中的文本和数值分隔成单独的列,这样我就可以对数值数据进行计算 我的专栏与此类似: 我读过关于通过apply函数和applymap函数来做类似的事情,但是我不能设计这样的函数,因为我对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
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