Python 如何从熊猫中杂乱无章的字典式数据框中提取分数?
我是熊猫的新手,我有一个数据框,看起来像这样:Python 如何从熊猫中杂乱无章的字典式数据框中提取分数?,python,pandas,dictionary,transformation,mining,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 看起来像字典
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:”之后的分数)
你的帮助真是太棒了。多谢各位
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
您是否可以发布一个代码示例,说明如何创建数据,或者更精确地说明格式(也可以使用代码格式)。现在,似乎有一个数据帧,每个列中都有一个dict条目OK,接近了。但是我发布的数据框中的每个条目都有一个我想要保留的索引。每一行我都有相同的一对,但它们不整齐。因此,在第一列的第三行中,11639:1.0,然后在第50行和第45列中,我有11639:0.5,等等。我要做的是创建一个新的数据帧来保存索引,为所有条目(即第11639列)在对的第一部分创建一个唯一的列,并且单元格将在冒号后变为浮点(即第三排为1.0,第45排为0.5)。