本文介绍了Pandas Dataframe:将多列拆分为多列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这种格式的熊猫数据框.

I've a panda dataframe in this format.

   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']

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

I want to convert it into the following format.

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

有人可以告诉我该怎么做吗?

Can anyone please tell me how to do it?

非常感谢!

推荐答案

如果列Var2Var3中的值位于lists中,则可以使用 numpy.repeat ,按 str.len 并按chain嵌套lists的平面值:

If values in columns Var2 and Var3 are in lists, you can use numpy.repeat for repeat values by legths by str.len and flat values of nested lists by 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

这篇关于Pandas Dataframe:将多列拆分为多列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-09 13:14