Pandas Dataframe:将多个列拆分为多个列

时间:2017-03-14 13:58:23

标签: python pandas

我有这种格式的熊猫数据框。

   Var1                  Var2                        Var2
    A   [2016-09-26, 2016-08-25, 2016-08-06] [u'1', u'5', u'4']
    B   [2016-09-26, 2016-08-25, 2016-08-06] [u'1', u'5', u'4']

我想将其转换为以下格式。

Var1     Var2      Var3
 A    2016-09-26    1
 A    2016-08-25    5
 A    2016-08-06    4
 B    2016-09-26    1
 B    2016-08-25    5
 B    2016-08-06    4

有谁能告诉我怎么做?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果Var2列和Var3列中的值位于lists中,则您可以numpy.repeat使用str.len来表示.addClass()的重复值和嵌套的平坦值lists chain

print (type(df.Var2.iat[0]))
<class 'list'>

print (type(df.Var3.iat[0]))
<class 'list'>

from  itertools import chain

df1 = pd.DataFrame({
        "Var1": np.repeat(df.Var1.values, df.Var2.str.len()),
        "Var2": list(chain.from_iterable(df.Var2)),
        "Var3": list(chain.from_iterable(df.Var3))})

print (df1)
  Var1        Var2 Var3
0    A  2016-09-26    1
1    A  2016-08-25    5
2    A  2016-08-06    4
3    B  2016-09-26    1
4    B  2016-08-25    5
5    B  2016-08-06    4