python Csv問題
不撤。不散 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應該會點

Ads

不撤。不散 2020-10-23 00:14:51 另外
你句「當C係有資料個時」
要睇番你個C點先係算冇資料
佢係show Nan, 定係 empty string
都會有分別
不撤。不散 2020-10-23 00:15:43 加油
但其實初初學, 就咁用2D array都夠做
Markovnikov 2020-10-23 00:17:54 此回覆已被刪除
不撤。不散 2020-10-23 00:18:31 原來咁都得
python 真係好好玩
df.loc[~df["C"].isna(), ("A", "B", "F")] = "01", "01", df["E"]
Markovnikov 2020-10-23 01:18:32 此回覆已被刪除
美c朗尼馬達 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)
Markovnikov 2020-10-23 01:56:20 此回覆已被刪除
美c朗尼馬達 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)
Markovnikov 2020-10-23 02:27:19 此回覆已被刪除
美c朗尼馬達 2020-10-23 02:36:44 有錯唔緊要 識改就ok
用唔熟啲function同library好正常
最緊要識睇documentation

Ads

Markovnikov 2020-10-23 02:37:43 此回覆已被刪除
無糖零可樂 2020-10-23 07:29:10 應該係show Nan 因為佢係入面完全冇data

我試下先 感謝大佬
:^(
無糖零可樂 2020-10-23 09:51:09 我都覺 就咁用csv好似唔太得
:^(
Cyborgman 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 回覆唔到既?

Ads

不撤。不散 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())