【问题标题】:Convert Pandas Dataframe Date Index and Column to Numpy Array将 Pandas Dataframe 日期索引和列转换为 Numpy 数组
【发布时间】:2017-02-11 11:09:16
【问题描述】:

如何将 1 列和具有多列的 Pandas 数据框的索引转换为 Numpy 数组,其中日期与数据框中的正确列值对齐?

这里有一些关于数据类型的问题,它让我疯狂地试图将索引和列都取出并放入一个数组中!!

我们将不胜感激!

【问题讨论】:

  • 您能否澄清您的问题,因为不清楚您真正想要什么,最好是示例数据、您的代码和所需的输出
  • 嗨@EdChum,经过很多困难,我已经将日期转换为值,因为我看不到另一种方式......所以我现在想将值(以前的日期)加入列值。我可以将 numpy 值的一维数组连接到另一个 Numpy 浮点值的一维数组,以便每个值与每个值对齐,即值 1 = [1,2,3,4] 值 2 = [7,8,9, 10]joint = [[1,7],[2,8],[3,9],[4,10]] 每当我尝试使用连接时,它都会将它们粘在两端,但我需要这些值排队!谢谢!

标签: python arrays pandas numpy dataframe


【解决方案1】:

如果A 是数据框并且col 是列:

import pandas as pd output = pd.np.column_stack((A.index.values, A.col.values))

【讨论】:

  • +1。对于其他用户:由于问题是关于日期索引(例如datetime64[ns]),index 和col 之间可能没有共同的 dtype,index 需要一些转换。同时.values 已被.to_numpy() 取代。见this question。
【解决方案2】:

你需要IIUCvalues:

start = pd.to_datetime('2015-02-24')
rng = pd.date_range(start, periods=5)

df = pd.DataFrame({'a': range(5), 'b':list('ABCDE')}, index=rng)  
print (df)
            a  b
2015-02-24  0  A
2015-02-25  1  B
2015-02-26  2  C
2015-02-27  3  D
2015-02-28  4  E

print (df.values)
[[0 'A']
 [1 'B']
 [2 'C']
 [3 'D']
 [4 'E']]

如果需要索引值也先将datetime转换为index中的string值,然后使用reset_index将index转换为列:

df.index = df.index.astype(str)
print (df.reset_index().values)
[['2015-02-24' 0 'A']
 ['2015-02-25' 1 'B']
 ['2015-02-26' 2 'C']
 ['2015-02-27' 3 'D']
 ['2015-02-28' 4 'E']]

【讨论】:

  • 感谢@jezrael,但我的值是“日期”格式,当我重置索引时,它们如何变成字符串?我尝试了这种方法。我还尝试将日期转换为浮点数,然后重新加入列值。我怎样才能使这项工作?我可以将 numpy 值的一维数组连接到另一个 Numpy 浮点值的一维数组,以便每个值与每个值对齐,即值 1 = [1,2,3,4] 值 2 = [7,8,9, 10] joint = [[1,7],[2,8],[3,9],[4,10]] 每当我尝试使用连接时,它都会将它们粘在两端,但我需要这些值排队!谢谢!
  • 我使用string 索引编辑答案,如果需要合并numpy array,请使用(np.vstack((np.array([1,2,3,4]),np.array([7,8,9,10]))).T)
猜你喜欢
  • 2018-12-27
  • 2019-08-04
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 2020-08-20
  • 1970-01-01
相关资源
最近更新 更多