【发布时间】:2017-03-15 20:07:11
【问题描述】:
我有 825468 行的 df。 我正在执行此操作。
frame = frame.drop(frame.loc[(
frame['RR'].str.contains(r"^([23])[^-]*-\1[^-]*$")), 'RR'].str.replace("[23]([^-]*)-[23]([^-]*)", r"\1-\2").isin(
series1.str.replace("1([^-]*)-1([^-]*)", r"\1-\2"))[lambda d: d].index)
在哪里
series1 = frame.loc[frame['RR'].str.contains("^1[^-]*-1"), 'RR']
它是做什么的
准备一系列RR 具有类似1abc-1bcd 的值,然后如果在框架中有一个RR,如2abc-2bcd,在替换后变为abc-bcd,并且它在替换后也有串联,它掉了。
但它会产生内存错误。有没有更有效的方法来执行相同的操作。
例如
如果在 df 中 ..
RR
0 2abc-2abc
1 1abc-1abc
2 3abc-3abc
3 2def-2def
4 3def-3def
5 def-dfd
6 sdsd-sdsd
7 1def-1def
然后从这个框架中删除2abc-2abc和3abc-3abc,因为删除2,3后它变成abc-abc,当我们从1abc-1abc中删除1时它也是abc-abc.2def-2def不应该被丢弃,因为没有1def-1def
输出:
RR
0 1abc-1abc
1 def-dfd
2 sdsd-sdsd
3 1def-1def
【问题讨论】:
标签: python python-2.7 pandas dataframe filtering