如果你想留在纯大熊猫,你可以扔一个棘手的小组,并应用哪个最终沸腾到一个班轮,如果你不计算列重命名.
In [1]: import pandas as pd
In [2]: d = {‘date’: [‘4/1/11′,’4/2/11′],’ts’: [[pd.Timestamp(‘2012-02-29 00:00:00’),pd.Timestamp(‘2012-03-31 00:00:00’),pd.Timestamp(‘2012-04-25 00:00:00’),pd.Timestamp(‘2012-06-30 00:00:00’)],[pd.Timestamp(‘2014-01-31 00:00:00’)]]}
In [3]: df = pd.DataFrame(d)
In [4]: df.head()
Out[4]:
date ts
0 4/1/11 [2012-02-29 00:00:00,2012-03-31 00:00:00,201…
1 4/2/11 [2014-01-31 00:00:00]
In [5]: df_new = df.groupby(‘date’).ts.apply(lambda x: pd.DataFrame(x.values[0])).reset_index().drop(‘level_1’,axis = 1)
In [6]: df_new.columns = [‘date’,’ts’]
In [7]: df_new.head()
Out[7]:
date ts
0 4/1/11 2012-02-29
1 4/1/11 2012-03-31
2 4/1/11 2012-04-25
3 4/1/11 2012-06-30
4 4/2/11 2014-01-31
由于目标是使用列(在这种情况下为日期)的值,并重复该列,您将从列表中创建的多个行的所有值,考虑熊猫索引是有用的.
我们希望日期成为新行的单个索引,所以我们使用groupby将所需的行值放入索引.然后在那个操作里面,我想分割这个日期的这个列表,这是适用于我们的.
我正在通过应用一个由单个列表组成的熊猫系列,但是我可以通过.values [0]访问该列表,该值将系列的唯一行推送到具有单个条目的数组.
要将列表转换成一组将被传回到索引日期的行,我可以将其设置为DataFrame.这引起了追加额外索引的惩罚,但是我们最终会丢弃它.我们可以使这个索引本身,但这将排除dupe值.
一旦这个被传回来,我有一个多索引,但是我可以强制这个我们希望通过reset_index的行格式.然后我们简单地删除不需要的索引.
这听起来很重要,但是我们只是利用大熊猫功能的自然行为来避免显式的迭代或循环.
速度明智这往往是非常好的,因为它依赖于应用在这里应用工作的任何并行技巧.
可选地,如果您希望它对于具有嵌套列表的多个日期是稳健的:
df_new = df.groupby(‘date’).ts.apply(lambda x: pd.DataFrame([item for sublist in x.values for item in sublist]))
在这一点上,一个衬垫变得密集,你应该可以抛入一个功能.
Original: https://blog.csdn.net/weixin_35655990/article/details/113679982
Author: Jael Goodrich
Title: python里数据框拆分_python – 在Pandas DataFrame中分割列表
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751553/
转载文章受原作者版权保护。转载请注明原作者出处!