如何从熊猫中类似字典的数据框中提取分数?

时间:2017-05-31 16:19:40

标签: python pandas dictionary transformation mining

我是熊猫新手,我的数据框看起来像这样:

9861:1.0    9620:1.0    9865:1.0    30260:1.0   30026:1.0   10770:1.0   
10772:1.0   10771:0.5   10774:0.5   10773:0.0   9750:1.0    9755:1.0    
9632:1.0    30255:1.0   30012:1.0   30015:1.0   30251:1.0   11639:1.0   

看起来像字典,但条目不按列排序。冒号前面的字符串是id,后面的字符串是分数。我需要一个函数来检索所有行的特定值。结果应该是一个新的数据框架:

1)保持每行的索引(不会在代码段中显示,但它在我的原始数据框中)。

2)创建标题为我指定的ID的列,单元格中的数据为分数(假设列9865应包含当前在“9865:”之后的分数)

你的帮助真的很棒。谢谢。

1 个答案:

答案 0 :(得分:0)

d1 = df.stack().str.split(':', expand=True)

s = pd.Series(
    d1.iloc[:, 1].values,
    [d1.index.get_level_values(0), d1.iloc[:, 0].values]
)

s

0  9861     1.0
   9620     1.0
   9865     1.0
   30260    1.0
   30026    1.0
   10770    1.0
1  10772    1.0
   10771    0.5
   10774    0.5
   10773    0.0
   9750     1.0
   9755     1.0
2  9632     1.0
   30255    1.0
   30012    1.0
   30015    1.0
   30251    1.0
   11639    1.0
dtype: object

您可以将数据引用为

s.loc[(0, 9865)]

1.0

您可以将结果和引用卸载为数据帧

s.unstack().loc[0, 9865]

1.0