【发布时间】:2016-01-27 03:54:21
【问题描述】:
我有以下问题:我想将列附加到数据框。这些列是该数据框另一行中的唯一值,填充了该值在该行中的出现。它看起来像这样:
df:
Column1 Column2
0 1 a,b,c
1 2 a,e
2 3 a
3 4 c,f
4 5 c,f
我想要得到的是:
Column1 Column2 a b c e f
0 1 a,b,c 1 1 1
1 2 a,e 1 1
2 3 a 1
3 4 c,f 1 1
4 5 c,f 1 1
(空格可以是nan也可以是0,没关系)
我现在已经编写了一些代码来实现这一点,但是它不是附加列,而是附加行,所以我的输出看起来像这样:
Column1 Column2
0 1 a,b,c
1 2 a,e
2 3 a
3 4 c,f
4 5 c,f
a 1 1
b 1 1
c 1 1
e 1 1
f 1 1
代码如下所示:
def NewCols(x):
for i, value in df['Column2'].iteritems():
listi=value.split(',')
for value in listi:
string = value
x[string]=list.count(string)
return x
df1=df.apply(NewCols)
我在这里尝试做的是遍历数据帧的每一行,并以逗号分割 Column2 中包含的字符串 (a,b,c),因此变量 listi
然后是一个包含分隔字符串值的列表。然后,对于每个值,我想创建一个新列并用listi 中该值的出现次数填充它。我很困惑为什么代码会附加行而不是列。有人知道为什么以及如何纠正吗?
【问题讨论】:
标签: python pandas append dataframe