use*_*157 7 python csv python-3.x pandas
我有一个csv文件,其中有几列我首先用冒号(;)分隔.但是,一列由管道分隔 我想分界这个专栏并创建新专栏.
输入:
Column 1 Column 2 Column 3
1 2 3|4|5
6 7 6|7|8
10 11 12|13|14
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Column 1 Column 2 ID Age Height
1 2 3 4 5
6 7 6 7 8
10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)
我的代码到目前为止第一次划分; 然后转换为DF(这是我想要的结束格式)
delimit = list(csv.reader(open('test.csv', 'rt'), delimiter=';'))
df = pd.DataFrame(delimit)
Run Code Online (Sandbox Code Playgroud)
您没有准确显示数据的样子(您说它是用分号分隔的,但您的示例没有任何分号),但如果它看起来像
Column 1;Column 2;Column 3
1;2;3|4|5
6;7;6|7|8
10;11;12|13|14
Run Code Online (Sandbox Code Playgroud)
你可以做类似的事情
>>> df = pd.read_csv("test.csv", sep="[;|]", engine='python', skiprows=1,
names=["Column 1", "Column 2", "ID", "Age", "Height"])
>>> df
Column 1 Column 2 ID Age Height
0 1 2 3 4 5
1 6 7 6 7 8
2 10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)
这是通过使用正则表达式分隔符(意思是“或者;” |)并手动强制列名称来实现的。
或者,您可以通过几个步骤来完成:
>>> df = pd.read_csv("test.csv", sep=";")
>>> df
Column 1 Column 2 Column 3
0 1 2 3|4|5
1 6 7 6|7|8
2 10 11 12|13|14
>>> c3 = df.pop("Column 3").str.split("|", expand=True)
>>> c3.columns = ["ID", "Age", "Height"]
>>> df.join(c3)
Column 1 Column 2 ID Age Height
0 1 2 3 4 5
1 6 7 6 7 8
2 10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)