0

我是 pandas 的新手,我有一个如下所示的数据框:

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:”之后的分数)

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

4

1 回答 1

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
于 2017-05-31T16:32:19.733 回答