python - 将具有列表中值的字典转换为 Pandas DataFrame

标签 python pandas dictionary dataframe

我有一本以城市名称为键的字典,每个城市对应一个日期列表。例如:

{
'A':['2017-01-02','2017-01-03'],
'B':['2017-02-02','2017-02-03','2017-02-04','2017-02-05'],
'C':['2016-02-02']
}

我想将其转换为以下包含 2 列的数据框。

City_Name  Date
A          2017-01-02
A          2017-01-03
B          2017-02-02
B          2017-02-03
B          2017-02-04
B          2017-02-05
C          2016-02-02

最佳答案

或者我们可以使用melt

pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in d.items() ])).melt().dropna()
Out[51]: 
  variable       value
0        A  2017-01-02
1        A  2017-01-03
4        B  2017-02-02
5        B  2017-02-03
6        B  2017-02-04
7        B  2017-02-05
8        C  2016-02-02

受 piR 启发的方法

pd.Series(d).apply(pd.Series).melt().dropna()
Out[142]: 
    variable       value
0          0  2017-01-02
1          0  2017-02-02
2          0  2016-02-02
3          1  2017-01-03
4          1  2017-02-03
7          2  2017-02-04
10         3  2017-02-05

关于python - 将具有列表中值的字典转换为 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204260/

相关文章:

python - 比较两个 pandas Dataframe 的日期并在日期相似时添加值?

python - 将 unix 时间转换为 pandas 数据框中的可读日期

python - 如何从数据框中按行删除空单元格

python - Webapp技术问题和建议

python - Pandas 多列中的第二和第三大值

python - 如何在 pandas 的 get_dummies 中指定要删除的列

python - 在一个 barplot 中绘制字典字典

python - 在python中向字典添加排名

python - 非递归函数 follow_me(d, s) 其中 d 是字典,s 是字符串

Python while/if 循环忽略条件