【问题标题】:Need to convert a dictionary which contains two lists into Pandas DataFrame需要将包含两个列表的字典转换为 Pandas DataFrame
【发布时间】:2021-08-30 22:23:03
【问题描述】:

所以我得到的字典如下:

{'a': [[time1, a1], [time2, a2],[time100,a100]], 'b': [[time1, b1], [time2, b2],[time100,b100]], 'c': [[time1, c1], [time2, c2],[time100,c100]]}

每个列表的第一项是 Unix 时间戳中的时间,我希望时间是每一行和每一列 = ['a','b','c']。每个列表中的第二个项目也将在每个受尊重的单元格中。 预期结果:

          a           b          c
time1.    a1.          b1.       c1
time2.    a2.         b2        c2
time100

基本上每个列表中的时间都是相同的,无论键是什么。我想选择超时并将每个列表中的第二个项目放到他们每个尊重的列中。 代码长什么样子?

【问题讨论】:

  • 欢迎来到stackoverflow。这不是免费的代码编写服务。我们可以帮助您解决代码中的问题,但我们不会为您编写代码。请edit您的问题并添加您尝试过的代码。当你运行它时会发生什么?你期望会发生什么?有什么错误吗?如果您不知道如何开始,教程和教科书将是更好的选择。另请参阅How to Ask

标签: python pandas dataframe data-structures dataset


【解决方案1】:
d={'a': [['time1', 'a1'], ['time2', 'a2'],['time100','a100']], 'b': [['time1', 'b1'], ['time2', 'b2'],['time100','b100']], 'c': [['time1', 'c1'], ['time2', 'c2'],['time100','c100']]}

通过DataFrame()apply()reset_index() 尝试:

#import pandas as pd
df=pd.DataFrame(d).apply(pd.Series.explode).reset_index(drop=True)
#you can also use agg() in place of apply()

现在我们将过滤掉结果:

c=df.index%2==0 
df=df[~c].set_index(df.loc[c,'a'].values)
#OR
df=df[~c].set_index(df[c]['a'].values)

df的输出:

            a       b       c
time1       a1      b1      c1
time2       a2      b2      c2
time100     a100    b100    c100

【讨论】:

  • 请查看已编辑的问题。对于造成的混乱,我真的很抱歉。
  • @ martinesk请更新答案 :) span>
  • 感谢您的回复!!但这是它返回的内容:[真为误真为false true false]。第一行运行良好,结果如下: a b c 0 time1 time1 time1 1 a1 b1 c1
  • @ martinesk运行整个代码不仅仅是c=df.index%2==0 span>
猜你喜欢
  • 2022-10-13
  • 2014-01-05
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
相关资源
最近更新 更多