Pandas DataFrame 的常用操作总结

预备:

随便搞一个DataFrame 出来先!!!

import numpy as np
import pandas as pd

data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Chongqing'],
    'year': [2016,2016,2015,2017,2016, 2016],
    'population': [2100, 2300, 1000, 700, 500, 500]}
frame = pd.DataFrame(data, columns = ['year', 'city', 'population'])

print(frame)

 

1、两列互换 ----> (城市去前面)

一行代码搞定!!!!

frame.insert(0,'city', frame.pop('city'))

说明:

index = 0 

colmun_name = 'city'

列的内容 = frame.pop('city')   

<class 'pandas.core.series.Series'>

2、创建DataFrame

import pandas as pd
test_dict = {'sip_ip':[ '10.0.0.88' ]}
test_dict_df  = pd.DataFrame(test_dict)
print(test_dict_df)

3、读取文件并重新rename

# 读取CSV 直接命名       
df = pd.read_csv(file_path, header=None, sep='\t', names=['user_agent'])

# 对DataFrame 改名字
df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)

 

4、DataFrame 进行去重

new_clean_data_df = new_clean_data_df.drop_duplicates(subset=['sip_ip'],keep=False).reset_index(drop=True)

 

5、新增数据(DataFrame_A 为历史数据 DataFrame_B 为当天数据 DataFrame_C为新增数据)

new_clean_data_df = clean_data_df.append(get_black_sip_data_frame)
new_clean_data_df = new_clean_data_df.append(get_black_sip_data_frame)
new_clean_data_df = new_clean_data_df.drop_duplicates(subset=['sip_ip'],keep=False).reset_index(drop=True)

 

A+B + A 去重 后就是 C 了

 

A是红色, B 是绿色, 再加A 是褐色, --> 去重 ,

这样保留的就是新增的了。

 

6、将两个dataframe 进行 全外连接

df3 = pd.merge(df1, df2, on=['domain_md5', 'domain_md5'], how='outer')

 

7、对某一列为NaN的数据填充0

df3["pv"].fillna(0, inplace=True)

 

8、当join的时候,填充 A df的某一列 值

df3["domain"].fillna(df3["fdomain"], inplace=True)

9、对某一列进行类型转换

要注意把NaN进行赋值

df3["pv"] = df3["pv"].map(lambda x: int(x))

 

10、删除某一列

df3 = df3.drop(columns=['fdomain'])

 

11、过滤某一列等于某一值

sip_end2end_data_frame =sip_end2end_data_frame.loc[sip_end2end_data_frame.from_ip =="xxxx.xxxx.xxx" ]

 

12、过滤dataframe的每一行,多条件过滤

new_df = sip_end2end_data_frame[
            sip_end2end_data_frame['from_ip'].apply(lambda x: str(x).strip() in bocai_ip_list) &
            sip_end2end_data_frame['to_ip'].apply(lambda x: str(x).strip() in bocai_ip_list)
        ]

13、对某一列聚合统计:

labe_sum = df["freq"].groupby(df["label"]).sum()

 

 

未完待续。。。

有一些场景可以描述一下,我来试着实现

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值