我有一个如下所示的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。我需要稍微调整一下这条线才能达到我想要的目的吗?谁来帮帮忙!
发布于 2016-05-28 13:39:44
你可以这样做:
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 见string method docs
发布于 2016-05-28 13:42:29
你可以用提取物。
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 vegetabledf_new看起来像:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbagehttps://stackoverflow.com/questions/37498537
复制相似问题