簡體   English   中英

如何從生成的 Pandas 數據框中刪除 dtype 和 Name

[英]How to remove dtype and Name from resulting pandas dataframe

對於某些操作,得到以下結果 c(a pandas dataframe)。 我的問題是如何從此結果中刪除 Name 和[3,1,1,3....]並提取純值,即[3,1,1,3....] 有沒有辦法做到這一點?

res 包含索引,我需要使用它在 dfxn 中找到相應的行。

dfxn 
Out[207]: 
         0      1       2      3      4      5      6  7
0    14.38  14.21  0.8951  5.386  3.312  2.462  4.956  1
1    10.83  12.96  0.8099  5.278  2.641  5.182  5.185  3
2    16.77  15.62  0.8638  5.927  3.438  4.920  5.795  2
3    10.74  12.73  0.8329  5.145  2.642  4.702  4.963  3
4    20.16  17.03  0.8735  6.513  3.773  1.910  6.185  2


res
Out[206]: 
      0
0    90
1    78
2   115
3    38
4    43
5   103
6    14
7    23
8    39
9    21
10   67
11   53
12   59
13  110
14   93
15   96
16   89
17  114
18  124
19  131
.
.
.


while i<len(res):
      c[i]=dfxn.ix[res[i]]['7']
      i+=1


c
Out[196]:
  0
0 21 3
Name: 7, dtype: int64
1 90 1
Name: 7, dtype: int64
2 78 1
Name: 7, dtype: int64
3 115 3
Name: 7, dtype: int64
4 38 1
Name: 7, dtype: int64
5 43 1
Name: 7, dtype: int64
6 103 1
Name: 7, dtype: int64
7 14 3

看起來c可能不是 DataFrame; 它可能是一個 Series 對象列表,這就是它像這樣打印的原因。 您可以通過查看type(c)來確認或反駁。 無論如何,提取值的更好方法是將索引用作數組 - 您不需要使用循環。

import pandas as pd
df = pd.DataFrame({'a':range(10), 'b':[i+5 for i in range(10)]})
res = pd.DataFrame([2,5,6,8])

c = df['b'].ix[res.values.ravel()]
print(c)

產量

2     7
5    10
6    11
8    13
Name: b, dtype: int64

在你的情況下,這將是

c = dfxn['7'].ix[res.values.ravel()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM