pandas真是太好用了,边学边用,几乎可以进行所有的数据库操作
1. 遍历和判断是否为空,不知道我写的对不对,因为空的话是NaN,float类型,其他数据都是str,所以我这里根据type判断是否为空,pandas有fillna方法可以填充确实的数据,因为我这里空值可以由id计算,所以没有用fillna填充,哪位朋友有更好的判空方法也请不吝赐教。
import pandas as pd
# 读入csv,file1的列名为 id,url
df1 = pd.read_csv("file1.csv")
# 遍历dataframe df1
for i,v in df1.iterrows():
url = v["url"]
id = v["id"]
# 判断是否为空
if type(url) is float:
print(0)
2. 向dataframe中增加一行,我这里用的append
注意:append返回空值,所以不要直接df.append(), 而是写作df = df.append()
df = pd.DataFrame(columns=["id","url"])
if s:
df = df.append({"id":s["id"],"url":s["url"]},ignore_index = True)
df.to_csv("file2.csv")
3. 修改列名,删除列
显示列名,df.columns
# 修改列名, 将 ref_url 改为 url
df.rename(columns={"ref_url":"url"})
# 删除某一列,删除 url1 列
del df["url1"]
4. 假设我有两个表格,一个文件A.csv中有所有的 ["aid", "bid", "url"],B.csv中有部分符合要求的 ["aid", "url"]
实现 在B中增加 aid 对应的 bid
a = pd.read_csv("filea.csv")
b = pd.read_csv("fileb.csv")
result = pd.merge(b, a, on="aid", how="left")
# 合并后,列名应该是 ["aid_x","aid_y","bid_y","url_x","url_y"] 所以修改一下合并后的列名
del result["aid_y","url_y"]
result.rename(columns={"aid_x":"aid"})
result.to_csv("filec.csv")
5. 修改某个数据的值
# 将 df 中第2行(index为1的行)的 aid 列的值改为 after
df.loc[1,"aid"] = "after"
# 修改第三行的所有值
df.loc[2] = ["a","b","c"]
# 修改第三行某两个值
df.loc[2,["aid","bid"]] = ["aa","bb"]