我是熊猫新手,我的数据框看起来像这样:
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:”之后的分数)
你的帮助真的很棒。谢谢。
答案 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