楼主: olympic
7757 6

[程序分享] ndarray与pandas series相互转换,ndarray与dataframe相互转换 [推广有奖]

  • 0关注
  • 9粉丝

泰斗

34%

还不是VIP/贵宾

-

威望
0
论坛币
49285 个
通用积分
6620.5435
学术水平
194 点
热心指数
237 点
信用等级
174 点
经验
22210 点
帖子
27705
精华
0
在线时间
8829 小时
注册时间
2014-4-10
最后登录
2024-5-24

初级热心勋章 中级热心勋章 20周年荣誉勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
python做计算时,经常需要类型转换,以下是常用类型转换
一、ndarray 转换为 series
、如果ndarray是二维数组,如下

array([[1],
       [2],
       [3]])

需要通过map结合lamdba

import numpy as np
import pandas as pd

data = np.array([1, 2, 3]).reshape(3, 1)
data_list = map(lambda x: x[0], data)
ser = pd.Series(data_list)

2、如果ndarray是一维数组,如下
array([1, 2, 3])
则通过data.tolist()即可

import numpy as np
import pandas as pd

data = np.array([1, 2, 3])
ser = pd.Series(data.tolist())
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Dataframe Series pandas array Frame

已有 2 人评分经验 论坛币 收起 理由
np84 + 100 精彩帖子
Studio-R + 40 + 5 精彩帖子

总评分: 经验 + 140  论坛币 + 5   查看全部评分

沙发
olympic 发表于 2021-4-12 16:03:58 |只看作者 |坛友微信交流群
二、series转换为ndarray
通过Series.values实现series转换为ndarray

import pandas as pd

data = [['2020/08/01', 10],
        ['2020/08/01', 11]]
result = pd.DataFrame(data, columns=['ds', 'val'])
result['val'].values

data2 = pd.Series([1, 2, 3])
data2.values

使用道具

藤椅
olympic 发表于 2021-4-12 16:04:48 |只看作者 |坛友微信交流群
三、ndarray转换为dataframe
1、直接通过pd.DataFrame转换

import numpy as np
import pandas as pd

data = np.array([['2019/08/02', 'zhansan', 1], ['2021/04/13', 'lisi', 2], ['2021/04/14', 'wangwu', 3]])
df = pd.DataFrame(data)
2、指定索引、数据、列名例子
import numpy as np
import pandas as pd

data = np.array([['', 'Col1', 'Col2'], ['Row1', 1, 2], ['Row2', 3, 4]])
df = pd.DataFrame(data=data[1:, 1:],  # 从第2行开始并且第2列开始作为数据
                  index=data[1:, 0],  # 第1列做索引,从第2行开始
                  columns=data[0, 1:])  # 第1行作为列名,从第2列开始

使用道具

板凳
olympic 发表于 2021-4-12 16:07:10 |只看作者 |坛友微信交流群
四、dataframe转换为ndarray

1、通过values方法,实现dataframe转换为ndarray
import pandas as pd

data = [['2021/04/01', 10],
        ['2021/04/01', 11]]
result = pd.DataFrame(data, columns=['ds', 'val'])
result.values

2、通过切片,实现某一行或者某一列转换为ndarray
import pandas as pd

data = [['2021/04/01', 10],
        ['2021/04/01', 11]]
result = pd.DataFrame(data, columns=['ds', 'val'])
rs = result.values
print(rs[:, 0])
print(rs[0, :])

rs[:, 0] 逗号前面表示:行都保留,逗号后面0表示保留第一列,结果为['2021/04/01' '2021/02/01']
rs[0, :]表示保留第一行,列都保留,结果为['2021/02/01' 10]

使用道具

报纸
三重虫 发表于 2021-4-14 10:09:23 |只看作者 |坛友微信交流群

使用道具

地板
512661101 发表于 2021-4-14 11:59:56 |只看作者 |坛友微信交流群

使用道具

7
lunqipan 发表于 2021-5-21 15:54:21 |只看作者 |坛友微信交流群
一、如果ndarray是二维数组或者多维数组,可以考虑使用data_1 = data.flatten() 把多维数组拉平成一维数组(最近刚好看到这个方法),然后按照一维数组去操作,ser = pd.Series(data_1)好像也可以直接转成Series。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-27 01:57