DataFrame to Series
将整个DataFrame转换为Series是不合理的, 因为DataFrame中含有多个列.
正常操作是从DataFrame中选择一列, 这样会自动生成一个Series.
df = pd.DataFrame().from_dict(data={'a':[1,2,3],'b':[4,5,6]}) # df : DataFrame
se = df['a'] # se : Series
Series to DataFrame
se = pd.Series(data = np.arange(start=1,stop=11,step=1))
se_df = se.to_frame(name='rand')
通过Series.to_frame方法转换为DataFrame, 索引不变. 如果不传入name参数, 则默认转换的列名为0(需确认?); 否则,将列名设为name参数传入的值.
DataFrame to List
首先使用np.array()函数把DataFrame转化为np.ndarray(),再利用tolist()函数把np.ndarray()转为list,示例代码如下:
import numpy as np
import pandas as pd
data_x = pd.read_csv("E:/Tianchi/result/features.csv",usecols=[2,3,4])#pd.dataframe
data_y = pd.read_csv("E:/Tianchi/result/features.csv",usecols=[5])
train_data = np.array(data_x)#np.ndarray()
train_x_list=train_data.tolist()#list
print(train_x_list)
print(type(train_x_list))
List 转 DataFrame
DataFrame 转 Dict
Dict 转 DataFrame
假设存在字典d
, 需要将其转换为pd.DataFame
.
> d= {u'2012-06-08': 388, u'2012-06-09': 388, u'2012-06-10': 388, u'2012-06-11': 389}
- 通过
from_dict
进行构建.
> d_df = pd.DataFrame().from_dict(d,orient='index').reset_index()
index 0
0 2012-06-08 388
1 2012-06-09 388
2 2012-06-10 388
3 2012-06-11 389
这样生成的DataFrame
的columns
分别为index
和0
, 不太方便理解和使用. 可以通过DataFrame.rename()
来对columns
进行重命名.
> d_df.rename(columns={'index': 'Date', 0: 'Count'},inplace=True)
Date Count
0 2012-06-08 388
1 2012-06-09 388
2 2012-06-10 388
3 2012-06-11 389
- 通过传递
list
键值对, 初始化DataFrame
.
>>> d_df = pd.DataFrame(data=list(d.items()),index=[5,6,7,8],columns=['Date','Count'],dtype=np.int32,copy=False)
>>> d_df
Date Count
5 2012-06-08 388
6 2012-06-09 388
7 2012-06-10 388
8 2012-06-11 389
copy
只对其他DataFrame
或其他2-D
格式的数据起作用. 默认为False
.
- 可以通过构建
Series
后reset_index
转为DataFrame
. 不过这种方法不直接, 不建议使用.
> s = pd.Series(d, name='DateValue')
> s.index.name = 'Date'
# 这里不可以使用inplace=True来重置index,
# 会抛出TypeError: Cannot reset_index inplace on a Series to create a DataFrame
> d_df = s.reset_index()
通过d
构建Series
, 后设置index.name
, 最后通过reset_index
将Series s
转换为DataFrame d_df
.
DataFrame 转 Numpy.array
np_arr = df.values
Numpy.array 转 DataFrame
df = pd.DataFrame(np_arr)