我正在尝试将数据框列拆分为多列,如下所示:
我遇到了以下解决方案,但由于上述原因它们不起作用:
pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)
df = df.apply(lambda x:pd.Series(x))
df['command'], df['value'] = df[0].str.split().str
我无法对这些答案发表评论,因为我是这个社区的新成员。如果有人能帮助我了解如何实现我的目标,我将不胜感激 - 即:在将新生成的列重命名为预定义名称的同时,动态使用相同的代码在多种情况下将一列拆分为多个用于不同数据帧的列。
例如:
数据框 1:
Col1 Col2 Col3
0 A A:B:C A
1 A A:B:C:D:E A
2 A A:B A
数据框 2:
Col1 Col2 Col3
0 A A:B:C A
1 A A:B:C:D A
2 A A:B A
输出应该是: 新数据框 1:
Col1 ColA ColB ColC ColD ColE Col3
0 A A B C NaN NaN A
1 A A B C D E A
2 A A B NaN NaN NaN A
新数据框 2:
Col1 ColA ColB ColC ColD ColE Col3
0 A A B C NaN NaN A
1 A A B C D NaN A
2 A A B NaN NaN NaN A
(如果ColE不在,那也没关系。)
在此之后,我会将这些数据帧连接成一个,在那里我需要针对 Col1 和 Col3 组合的单个数据帧的所有 ColA 到 ColE 的计数。所以,我们需要牢记这一点。
答案 0 :(得分:0)
你可以这样做:
columns = df.Col2.max().split(':')
#['A', 'B', 'C', 'D', 'E']
new = df.Col2.str.split(":", expand = True)
new.columns = columns
new = new.add_prefix("Col")
df.join(new).drop("Col2", 1)
# Col1 Col3 ColA ColB ColC ColD ColE
#0 A A A B C None None
#1 A A A B C D E
#2 A A A B None None None