Python 将词典列表转换为单独的列
我想要一个df,它有一列字典列表 示例df:Python 将词典列表转换为单独的列,python,pandas,Python,Pandas,我想要一个df,它有一列字典列表 示例df: testData {1: MLB, 2: NBA, 3: NFL} 具体如下: Number Sport 1 MLB 2 NBA 3 NFL 我尝试了以下方法: pd.DataFrame(df['testData'].values.tolist()) 但这又回来了 MLB NBA NFL 1 2 3 我想我已经很接近了,但我需要一些关于如何正确转换数据帧的帮助。您可以将apply与pd.S
testData
{1: MLB, 2: NBA, 3: NFL}
具体如下:
Number Sport
1 MLB
2 NBA
3 NFL
我尝试了以下方法:
pd.DataFrame(df['testData'].values.tolist())
但这又回来了
MLB NBA NFL
1 2 3
我想我已经很接近了,但我需要一些关于如何正确转换数据帧的帮助。您可以将apply与pd.Series构造函数一起使用:
In [11]: df
Out[11]:
testData
0 {1: 'MLB', 2: 'NBA', 3: 'NFL'}
In [12]: df["testData"].apply(pd.Series)
Out[12]:
1 2 3
0 MLB NBA NFL
In [13]: df["testData"].apply(lambda d: pd.Series(list(d), d.values()))
Out[13]:
MLB NBA NFL
0 1 2 3
要将这些内容放到一个体育专栏中,您可以
堆叠:
In [14]: df["testData"].apply(lambda d: pd.Series(list(d), d.values())).stack()
Out[14]:
0 MLB 1
NBA 2
NFL 3
dtype: int64
In [15]: res = df["testData"].apply(lambda d: pd.Series(list(d), d.values())).stack().reset_index(level=1)
In [16]: res.columns = ["sport", "number"]
In [17]: res
Out[17]:
sport number
0 MLB 1
0 NBA 2
0 NFL 3
您可以使用pd.to\u frame
:
test_data = {1: 'MLB', 2: 'NBA', 3: 'NFL'}
pd.Series(test_data).to_frame('sport').reset_index().rename(columns={'index':'Number'})
Number sport
0 1 MLB
1 2 NBA
2 3 NFL
您可以这样做:
ps = pd.Series(testData)
df = pd.DataFrame(ps).reset_index()
df.columns = ['Number', 'Sport']
除此之外,如果不需要第一个索引列,也可以这样做:
df.set_index('Number', inplace=True)
结果将是
Number Sports
1 MLB
2 NBA
3 NFL
这里是一个开始:pd.Series(testData).reset_index()
现在,请找出如何修复列。嘿,感谢您的响应,但这就是我已经得到的。我想要数字体育1大联盟2 NBA 3NFL@skimchi1993请参见编辑,这对您有用吗?另外,我假设这有更多的行,而不仅仅是一行。。。(我上面的代码支持这一点)。我收到一个“仅对唯一值索引对象重新索引有效”错误。调查it@skimchi1993你有像{1:NBA,2:NBA}
这样的条目吗?有。这是不允许的吗?