我有这样一个数据帧df_in
:
import pandas as pd
import numpy as np
dic_in = {'A':['aa','bb','cc','dd','ee','ff','gg','uu','xx','yy','zz'],
'B':['200','200','AA200','AA040',np.nan,'500',np.nan,'0700','900','UKK','200'],
'C':['UNN','400',np.nan,'AA080','AA800','B',np.nan,'400',np.nan,'500','UKK']}
我的目标是研究B
列和C
列,以便:
'AA'
,则必须删除字符串中的数字部分,只留下数字部分。(AA123 ---> 123
)。如果零出现在第一个非空元素之前,则必须将其删除(AA001234 ---> 1234
)。你知道吗0.0
(NaN ---> 0.0
、UNN ----> 0.0
、UKK ---> 0.0
等等)。你知道吗070--->700
,00007000--->7000
)100
。你知道吗最终结果如下:
# BEFORE # # AFTER #
A B C A B C
0 aa 200 UNN 0 aa 200 0.0
1 bb 200 400 1 bb 200 400
2 cc AA200 NaN 2 cc 20000 0.0
3 dd AA040 AA080 3 dd 4000 8000
4 ee NaN AA800 4 ee 0.0 80000
5 ff 500 B 5 ff 500 0.0
6 gg NaN NaN 6 gg 0.0 0.0
7 uu 0700 400 7 uu 700 400
8 xx 900 NaN 8 xx 900 0.0
9 yy UKK 500 9 yy 0.0 500
10 zz 200 UKK 10 zz 200 0.0
你知道一个聪明有效的方法来达到这个目标吗?你知道吗
注意:所有数字实际上都是字符串,它们应该保持原样。你知道吗
您可以使用^{} 将replace not numeric替换为
NaN
。你知道吗然后从字符串中取^{} 个数,用^{} 从左移
0
,再加上00
。你知道吗最后^{} 与^{} 并指定给列:
通过字符串
0.0
将所有值转换为字符串(避免使用一些字符串和一些数值)的位修改解决方案:假设数据帧中的所有值都是字符串(包括
NaN
,否则可以使用fillna
将它们转换为适当的字符串),可以对要转换的两列使用以下converter
函数和applymap
。你知道吗df
的内容:相关问题 更多 >
编程相关推荐