Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同时创建数据帧拆分列列表_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 同时创建数据帧拆分列列表

Python 同时创建数据帧拆分列列表,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有这样一个数据帧: data = {'period':[ [{'periods': [{'From': '19', 'To': '21'}]}, {'periods': [{'From': '13', 'To': '30'}]}, {'periods': [{'From': '02', 'To': '26'}]}], [{'periods': [{'From': '21', 'To': '26'}]}, {'perio

我有这样一个数据帧:

data = {'period':[
                  [{'periods': [{'From': '19', 'To': '21'}]}, {'periods': [{'From': '13', 'To': '30'}]}, {'periods': [{'From': '02', 'To': '26'}]}],  
                  [{'periods': [{'From': '21', 'To': '26'}]}, {'periods': [{'From': '22', 'To': '27'}]}, {'periods': [{'From': '05', 'To': '07'}]}]
                 ], 
        'Age':[
                  ['9820', '5480', '8535'], 
                  ['1524', '6555', '4555']
              ], 
        'Address':[
                    '2', 
                    '3'
                   ]
        }

df = pd.DataFrame(data) 

我希望以以下方式转换我的数据集:

data = {'Name':[
{'periods': [{'From': '19', 'To': '21'}]}, 
{'periods': [{'From': '13', 'To': '30'}]}, 
{'periods': [{'From': '02', 'To': '26'}]}
,  
{'periods': [{'From': '21', 'To': '26'}]}, 
{'periods': [{'From': '22', 'To': '27'}]}, 
{'periods': [{'From': '05', 'To': '07'}]}
], 
        'Age':['9820', '5480', '8535','1524', '6555', '4555'], 
        'Address':['2', '2', '2', '3', '3', '3']}

df = pd.DataFrame(data) 

我正在努力寻找一种方法来同时对两列执行
explode()
,以便列周期中列表的第一个元素属于列周期中列表的第一个元素的同一行

期间列表和年龄列表的大小始终相同

我试着这样做:

df = df.reset_index()
uid = df.set_index('index')['period'].explode().reset_index()
df = uid.join(df['Age'].explode())
但它不再显示
地址


我将感谢任何帮助。谢谢

让我们尝试手动分解它们:

names = df.period.explode()
ages = df.Age.explode()

pd.DataFrame({'Name':names, 'Age':ages, 'Address':df.Address.reindex(ages.index)})
输出:

                                        Name   Age Address
0  {'periods': [{'From': '19', 'To': '21'}]}  9820       2
0  {'periods': [{'From': '13', 'To': '30'}]}  5480       2
0  {'periods': [{'From': '02', 'To': '26'}]}  8535       2
1  {'periods': [{'From': '21', 'To': '26'}]}  1524       3
1  {'periods': [{'From': '22', 'To': '27'}]}  6555       3
1  {'periods': [{'From': '05', 'To': '07'}]}  4555       3

您可以使用
apply
+
explode

df.apply(pd.Series.explode).reset_index(drop=True)


非常好的解决方案,谢谢!谢谢你的帮助!
                                      period   Age Address
0  {'periods': [{'From': '19', 'To': '21'}]}  9820       2
1  {'periods': [{'From': '13', 'To': '30'}]}  5480       2
2  {'periods': [{'From': '02', 'To': '26'}]}  8535       2
3  {'periods': [{'From': '21', 'To': '26'}]}  1524       3
4  {'periods': [{'From': '22', 'To': '27'}]}  6555       3
5  {'periods': [{'From': '05', 'To': '07'}]}  4555       3