【问题标题】:How to remove dtype and Name from resulting pandas dataframe如何从生成的 pandas 数据框中删除 dtype 和 Name
【发布时间】:2014-12-15 14:53:55
【问题描述】:

对于某些操作,得到以下结果 c(a pandas dataframe)。我的问题是如何从这个结果中删除 Name 和 dtype 并提取普通值,即[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

【问题讨论】:

  • 了解resdfxn 的外观会有所帮助,请修正缩进并明确什么是实际代码以及什么是IPython 控制台输出。
  • 您好 Ajean,感谢您的建议。我编辑了我的问题并添加了 res 和 dfxn。现在可以查了吗?
  • 另外为了将来参考,stack sn-ps 不适用于 python(它们仅适用于 Javascript、CSS 和 HTML)。

标签: python pandas


【解决方案1】:

看起来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()]

【讨论】:

  • 成功了!!但是 c 是一个 DataFrame.. 我检查了它.. type(c) Out[219]: pandas.core.frame.DataFrame。谢谢你的帮助..
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2017-05-18
  • 2021-08-22
  • 2015-05-03
相关资源
最近更新 更多