python Csv問題

256 回覆
0 Like 55 Dislike
2020-10-23 00:13:28
df.loc[~df["C"].isna(), ("A", "B")] = "01"
df.loc[~df["C"].isna(), "F"] = df["E"] 

留意番
python入唔到 01 做 INT
你要store 01, 一係就 就用到 integer 1, 一係就用 string
上面係用string 既例子

第2, 你話要搬, 我唔知你想E搬左去F之後
E應該會點
2020-10-23 00:14:51
另外
你句「當C係有資料個時」
要睇番你個C點先係算冇資料
佢係show Nan, 定係 empty string
都會有分別
2020-10-23 00:15:43
加油
但其實初初學, 就咁用2D array都夠做
2020-10-23 00:18:31
原來咁都得
python 真係好好玩
df.loc[~df["C"].isna(), ("A", "B", "F")] = "01", "01", df["E"]
2020-10-23 01:35:12
你呢個情況可以先開個file 逐行逐行掃睇下到keyword未 到咗就停 然後將個file object對落pd.read_csv() 到

with open(“xxx.csv”) as f:
    line = f.readline()
    while line:
        if line.strip() == “A,B,C,D”:
            break
        line = f.readline()
    df = pd.read_csv(f)
2020-10-23 02:23:24
首先你搞清楚點讀個file先 你段code 個line讀咗一次然後去loop個line再讀多次即係只會讀咗兩行

你呢個情況都係逐行讀 搵到keyword後store起其他values去list然係攞成個list去construct個df仲好

假設個file係咁
Intro
keyword1,2,3,4
5,6,7,8

with open("xxx.csv") as f:
    data = []
    keyword_found = False
    for line in f:
         if keyword_found:
             data.append(line.strip().split(','))
         if line.startswith("keyword"):
             keyword_found = True
             data.append(line[len("keyword"):].strip().split(','))
df = pd.DataFrame(data)
2020-10-23 02:36:44
有錯唔緊要 識改就ok
用唔熟啲function同library好正常
最緊要識睇documentation
2020-10-23 07:29:10
應該係show Nan 因為佢係入面完全冇data

我試下先 感謝大佬
2020-10-23 09:51:09
我都覺 就咁用csv好似唔太得
2020-10-23 14:44:57
其實pandas.read_csv accept skiprows as a parameter. 你搵到要跳幾行就得,唔駛重新construct一個list再load入pandas
2020-10-23 16:16:22
同我想問個CSV內容次次唔同 但都可以自動修改指定既列?
2020-10-23 16:17:20
主要睇你點定位
講多少少聽下
2020-10-23 16:42:28


首先係想張ABC呢3個都改左啲資料
而DEF既資料都會保留
最後就係張G既資料搬去H
同F就會順序加123

2020-10-23 16:47:02
1999

col: a, b, c
你想點改資料?

搬資料, 改資料, 都係睇你點用好個 .loc
定好位就唔難
你有冇話邊個column 出現左d咩就會改資料之類?
2020-10-23 16:53:09
基本上想當column D 出現 data時
column A 同B就會改左為一個固定既data
而column C就會清空
column G 既data就會搬去column H
最後 column F 會順序加1

2020-10-23 17:03:12
回覆唔到既?
2020-10-23 17:03:55
row_filter = (df["D"] != "") & (~df["D"].isna())
df.loc[row_filter, "H"] = df["G"]
df.loc[row_filter, ("A", "B", "C", "G")] = 'Data1', 'Data2', '', ''
df.loc[row_filter, "F"] += 1
2020-10-23 17:08:56
用pandas幾句就得?
2020-10-23 17:10:44
如果加上每30秒就去改個csv 係唔係加個loop?
2020-10-23 17:15:58
出現 error

KeyError: 'D'
row_filter = (df["D"] != "") & (~df["D"].isna())
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞