首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何改变数据帧中保存的数据的格式?

如何改变数据帧中保存的数据的格式?
EN

Stack Overflow用户
提问于 2017-02-28 13:58:56
回答 1查看 41关注 0票数 1

我有以下数据:

df1

代码语言:javascript
运行
复制
0     (AG, AD, AE)
1     (AG, AM, AF)
dtype: object

df2

代码语言:javascript
运行
复制
0    [99.0, 45.0, 99.0, 92.0, 140.0, 53.0, 185.0, 8...
1    [78.0, 52.0, 74.0, 29.0, 30.0, 57.0, 48.0, 39....

df3

代码语言:javascript
运行
复制
0    [19.0, 22.0, 13.0, 24.0, 70.0, 50.0, 185.0, 8...
1    [18.0, 33.0, 74.0, 29.0, 30.0, 77.0, 48.0, 39....

我想将这些系列保存为数据格式。如果我做了df = pd.DataFrame({"TYPE-1":df1,"TYPE-2":df2,"TYPE-2":df2}),我就会得到这个:

代码语言:javascript
运行
复制
TYPE-1        TYPE-2                          TYPE-3
(AG, AD, AE)  [99.0, 45.0, 99.0, 92.0,...]    [78.0, 52.0, 74.0, 29.0, ...]
(AG, AM, AF)  [78.0, 52.0, 74.0, 29.0,...]    [18.0, 33.0, 74.0, 29.0,...]

如何将格式更改为此格式?:

代码语言:javascript
运行
复制
TYPE-1        TYPE-2         TYPE-3
(AG, AD, AE)  99.0           78.0
(AG, AD, AE)  45.0           52.0
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-28 14:13:43

您需要numpy.repeat来创建新的复制列,并通过chain.from_iterable对另一个列进行平坦处理。

代码语言:javascript
运行
复制
from itertools import chain
#sample from another solution
df1 = pd.DataFrame(dict(tups = [('A', 'B'), ('C', 'D')]))
df2 = pd.DataFrame(dict(lsts=[[1, 2, 3, 4], [5, 6, 7, 8]])) 
df3 = pd.DataFrame(dict(lsts=[[9, 10, 11, 12], [14, 15, 6, 4]]))


df2 = pd.DataFrame({
        "a": np.repeat(df1.tups.values, df2.lsts.str.len()),
        "b": list(chain.from_iterable(df2.lsts)),
        "c": list(chain.from_iterable(df3.lsts))})

print (df2)

        a  b   c
0  (A, B)  1   9
1  (A, B)  2  10
2  (A, B)  3  11
3  (A, B)  4  12
4  (C, D)  5  14
5  (C, D)  6  15
6  (C, D)  7   6
7  (C, D)  8   4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42510720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档