目录
35. 对DataFrame根据A列去重,同时要有限B列最小的行
1. List转DataFrame
# result是二维列表[[a,1],[b,2],[c,3]]
data = pd.DataFrame(result)
data.columns = ['A', 'B']
data
2. 计算相关系数
corr = round(data['A'].corr(data['B']), 4)
3. index重新排序
projects = projects.reset_index(drop=True)
4. 两个DataFrame根据某一列的值合并(列增多)
# 删掉缺失值
data = pd.merge(data1, data2, on='A')
# 缺失值补NAN
data = pd.merge(data1, data2, on='A', how='outer')
5. DataFrame A列值相同,B列值相加/平均
supports = supports.groupby(by=['A'])['B'].sum()
supports = supports.groupby(by=['A'])['B'].mean()
6. 列名相同的DataFrame竖着合并(行增多)
data = pd.concat([data2,data1])
7. DataFrame按A列的值排序
test = test.sort_values(by="A" , ascending=False)
8. DataFrame多条件查询
wuhan.loc[(wuhan["A"]=='exp') & (wuhan["B"]==0), :]
9. 查看DataFrame各列的数据类型
projects.dtypes
10. 查看A列缺失值的行
queshi = data[data['A'].isnull().T]
11. DataFrame根据A列去重
projects = projects .drop_duplicates(['A'])
12. 按条件替换某一列中的值
data.loc[data['A']==0, ['B']] = 1
13. DataFrame增加一列
# gap_list 是数组
s = pd.Series(gap_list)
s.name = "A"
data= pd.concat([data,s], axis=1)
data
14. DataFrame删除A、B列
data= data.drop(columns=['A', 'B])
15. DataFrame根据index删除行
data = data.drop(index=[0, 1])
16. Counter转DataFrame
df = DataFrame(counter.items(), columns=['cnt1', 'cnt2'])
17. 删除某列
df_test = test1.drop(['Unnamed: 0'], axis=1)
18. 根据行索引定位多行
poor.loc[[29, 30]]
19. 将指定列作为索引
poor.set_index(['Country_id'], inplace=True)
20. 删除某列为空的行
temp = temp.dropna(subset=['FINISH_TIME'])
21.修改DataFrame某一列的数据类型
temp['FINISH_TIME'] = pd.to_datetime(temp['FINISH_TIME'], format = '%Y%m%d')
support['love_point'] = support['love_point'].astype(object)
df['a'] = pd.to_numeric(df['a'])
22. DataFrame转字典
# projects是两列的DataFrame,转成的字典把第一列当作Key,第二列当作value
projects = dict(zip(list(projects['A']),list(projects['B'])))
23. 对某一列的值进行某一个相同操作
import time
def get_time(timeStamp):
return time.strftime("%Y-%m-%d", time.localtime(timeStamp))
support['time']= support.apply(lambda x:get_time(x['time']),axis=1)
24. 对DataFrame的某一列进行某种操作
# 让A列的每个元素都加一,处理后的列赋值给B列
df['B'] = df['A'].apply(lambda x : x+1)
25. 字典转DataFrame
pd.DataFrame.from_dict(pagerank, orient='index').reset_index()
26. 筛选出某列值在某个范围的行
# citys是一个可迭代对象
df.loc[df['A'].isin(citys)]
27. 读数据,第一列作为行号
distance = pd.read_csv('./data/城市之间的距离.csv', index_col=0)
28. 从指定行开始读数据
data = pd.read_excel('./data.xlsx', header=6)
29. DataFrame计算某列相邻两个元素的差值
df['sep'] = df['minutes'].diff()
30. 合并两列,中间用逗号分隔
list(df["lat"].map(str) + "," + df["lon"].map(str))
31. 只读前n行
inflow = pd.read_csv('res/inflow.csv', nrows=10)
32. 第一列作为索引
inflow = pd.read_csv('res/inflow.csv', index_col=0)
33.提取前n列/最后一列
# 前n列
data.iloc[:,:n]
# 最后一列
data.iloc[:,-1]
34. 新增一列B,B是A列的累计和
df['B'] = pd.Series(np.cumsum(df['A']))
35. 对DataFrame根据A列去重,同时要有限B列最小的行
# 方法1
data.loc[data.groupby('A')['B'].idxmin()]
# 方法2
data.sort_values(by='B').groupby('A', as_index=False).first()
36. 字符串日期转为日期数据类型
pd.to_datetime(df['date'])
其他:
# 13位时间戳转时间
import time
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timeStamp))
# 时间字符转时间类型
test = '2019-10-10 23:40:00'
timeArray = time.strptime(test, "%Y-%m-%d %H:%M:%S")
# 更改时间字符的显示格式
test = '2019-10-10 23:40:00'
timeArray = time.strptime(test, "%Y-%m-%d %H:%M:%S")
otherStyleTime = time.strftime("%Y/%m/%d %H", timeArray)
# 时间字符转时间戳
int(time.mktime(time.strptime('2013-10-10 23:40:00', "%Y-%m-%d %H:%M:%S")))