【发布时间】:2019-09-30 02:23:45
【问题描述】:
我在ddata.csv中的数据如下:
col1,col2,col3,col4
A,10,a;b;c, 20
B,30,d;a;b,40
C,50,g;h;a,60
我想根据它们的值将 col3 分成多个列。在其他方面,我希望我的最终数据看起来像
col1, col2, name_a, name_b, name_c, name_d, name_g, name_h, col4
A, 10, a, b, c, NULL, NULL, NULL, 20
B, 30, a, b, NULL, d, NULL, NULL, 40
C, 50, a, NULL, NULL, NULL, g, h, 60
我的代码,目前引用自 answer,不完整:
import pandas as pd
import string
L = list(string.ascii_lowercase)
names = dict(zip(range(len(L)), ['name_' + x for x in L]))
df = pd.read_csv('ddata.csv')
df2 = df['col3'].str.split(';', expand=True).rename(columns=names)
列名'a','b','c' ...是随机取的,与实际数据a,b,c无关。
现在,我的代码可以将 'col3' 分成三列,如下所示:
name_a name_b name_c
a b c
d e f
g h i
但是,应该是这样的 name_a, name_b, name_c, name_d, name_g, name_h a, b, c, 空, 空, 空 a, b, 空, d, 空, 空 一、空、空、空、g、h
最后,我只需要用这些多列替换 col3。
【问题讨论】:
-
@razdi 我的代码只是将第 3 列拆分为 3 列 - name_a、name_b 和 name_c。但是,列 name_a 应该只包含 'a' 而不是 'd' 或 'h'。我需要根据它们的值来分隔列。
标签: python pandas csv dataframe