[英]How to remove everything after the last occurence of a character in a Dataframe?
我有一个看起来像这样的数据帧DF
(这是一个示例):
EQ1 EQ2 EQ3
0 Apple.fruit Oranage.eatable.fruit NaN
1 Pear.eatable.fruit Banana.fruit NaN
2 Orange.fruit Tomato.eatable Potato.eatable.vegetable
3 Kiwi.eatable Pear.fruit Cabbage.vegetable
<And so on.. It is a large Dataframe>
我希望在最后一次出现点之后删除所有内容.
在DF
每个元素中,并以不同的名称保存,例如df_temp
。
期望的输出:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbage
<And so on>
这就是我尝试过的: df_temp=".".join(DF.split(".")[:-1])
。
不幸的是,这似乎只适用于字符串而不是Dataframe。 我是否需要稍微调整一下这条线来实现我想要的? 有人请帮忙!
你可以这样做:
df_temp = df.apply(lambda x: x.str.split('.').str[:-1].str.join('.'))
输出:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbage
请参阅字符串方法docs
你可以使用提取物。
df_temp = df.apply(lambda x: x.str.extract(r'.*\.([^\.]*)', expand=False))
df_new = df.apply(lambda x: x.str.extract(r'(.*)\.[^\.]*', expand=False))
df_temp
看起来像:
EQ1 EQ2 EQ3
0 fruit fruit NaN
1 fruit fruit NaN
2 fruit eatable vegetable
3 eatable fruit vegetable
df_new
看起来像:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbage
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.