Pandas根据不同的分隔符拆分行

时间:2017-09-29 15:02:31

标签: python pandas split

所以我现在有这个:

List<KNW_GradedActivity> grades = Arrays.asList(new KNW_GradedActivity(), new KNW_GradedActivity(), new KNW_GradedActivity());
grades.get(0).setScore(91);
grades.get(1).setScore(81);
grades.get(2).setScore(71);

DoubleSummaryStatistics statistics = grades.stream().
        collect(Collectors.summarizingDouble(KNW_GradedActivity::getScore));
System.out.println(statistics);
// DoubleSummaryStatistics{count=3, sum=243.000000, min=71.000000, average=81.000000, max=91.000000}

在找到s = final_df['Column Name'].str.split(';').apply(pd.Series, 1).stack() 分隔符时拆分行。但是,我不会总是将分号作为我的分隔符。是否要将;或其他分隔符合并到re.split中?基本上,可能会有“str.split”,“:;,”作为我的分隔符,但我不会知道。

我试图做|,但我知道那不行。

1 个答案:

答案 0 :(得分:2)

str.split提供regex就像re.split一样。所以,你需要使用后者。以下应该做:

s = final_df['Column Name'].str.split(r'[;:|]').apply(pd.Series, 1).stack()

如果起始文件包含这些分隔符,您实际上可以将正则表达式模式提供给sep函数的read_table参数,并将其engine参数设置为"python" 。以下使用io模块和随机字符串来说明要点:

import io
import pandas as pd


mystring = u"hello:world|123;here|we;go,again"
with io.StringIO(mystring) as f:
    df = pd.read_table(f, sep=r"[;:|,]", engine="python", header=None)

df
#        0      1    2     3   4   5      6
# 0  hello  world  123  here  we  go  again

这一部分分为:;|,

我希望这证明有用。