python Csv問題

256 回覆
0 Like 55 Dislike
2020-10-25 21:23:34
有冇得就咁用DataFrame黎加新一個col?
2020-10-25 21:46:05
我喺公司都有幾個python寫嘅micro service長期行緊,變咗返工好撚得閒

不過好難想像大型app用python寫
2020-10-25 21:56:59
我嗰個都未算大型,中型左右,大概35000行真係自己service嘅code(唔計所有library),其實最好static typing + 足夠testing (unit test, integration test, e2e backend test),唔會太差
2020-10-25 22:19:19
介唔介意講多啲,想知下你本身份工同coding有冇關係?

因為我同我同事兩個純係因為懶同唔想做repetitive tasks,所以抽公司時間寫(老細又肯比),不過因為本身冇CS底遇上唔少麻煩,例如諗方法bypass production同office network... 邊做邊學,雖然結果都幾滿意

反正最後係方便咗自己
2020-10-25 22:25:33
讀完csv後加一句
if len(df.columns) != 9:
    df[8] = 0
2020-10-26 10:09:35
得左啦!
係唔係如果冇col9就加個col8咁解?
2020-10-26 10:13:29
仲有個問題係 我想第col8 每次新增一行就加一 咁應該點?

col 8

5000
5001
5002

咁自動加1
2020-10-26 10:16:25
本身做software eng,基本上我就係睇住條team嘅infrastructure/reliability,develop新framework-level feature,make sure release safety,set up所有需要嘅monitoring+alert等
2020-10-26 10:52:10
唔明你只喺改data, 點解要用到csv parser嚟做, 直接當txt file嚟改應該又快又簡單。
2020-10-26 13:09:31
parse csv / parse website data
呢D咁易
Google一搵都大把tutorial啦
2020-10-26 13:15:34
if len(df.columns) != 9:
    df[8] = 0


完全唔關事
呢句野只係講緊如果df 既 column 唔係剛好9個
就會將df 入面 一個name 係 8 的 column set 做 0

1. 如果col 數量少於9 或者 大於9 都會行下面果句
2. 上面段code係講緊 df.iloc[:, 8], 係講緊第 9個col
但你而家係新增 / 修改緊一個叫 8 (integer) 的 column
同佢係唔係 第9個 col 完全冇關係
2020-10-26 13:18:42
用 range


例如, 你個df 的長度係 5000
你想用一個叫 "H" 既 column 裝住佢
就咁
df["H"] = range(0, len(df))


如果你想用第8個col 就咁
* 注意, 第8個col 的index 係 7, 因為 start from zero
df.iloc[: , 7] = range(0, len(df))

但唔建議用iloc, 因為好易錯
正確係用番 col name 去做, 即係方法1
2020-10-26 13:19:42
可以佢個file好大
行數好多
或是只係想練下code
2020-10-26 13:22:31
佢紅字錯誤係講緊你個 df 冇 column index 8
即係話佢只係得 8行column, 你想拎第9行既資料
佢出現錯誤

你試下就咁行以下code 比我望下
import pandas as pd

df = pd.read_csv("D:/OcData/test/Test1.csv')
print(df.info())
print(df)
2020-10-26 13:41:44
我第col 8係原本冇data 我一陣run下
2020-10-26 15:16:08


原本係冇col 8
我想加一個新
然後每次有一行新既data
Col8 就會加1

大約想改到好似咁
2020-10-26 15:38:57
>>> 原本係冇col 8
>>> 我想加一個新
就咁用
df[<新的column name>] = <新資料>

python df[8] = 1

>>> 然後每次有一行新既data
>>> Col8 就會加1
呢個每次有D難明
如果你只係想col 8 係等於你個csv 既長度的一個順序number
你就用
python df[8] = range(len(df))

如果你係要有某D 條件先加1既
就要睇你有咩條件



btw, 如果只係D比較簡單既資料
用個 2D array 都夠做
但當然你要學下都OK
但要識下D ERROR MSG
起碼知係邊行錯
2020-10-26 15:41:53
Just use df[8] = df.index+5000
2020-10-26 16:01:14
基本上有新一行既data就可以加1
2020-10-26 16:02:03
但會唔會自動加1?
2020-10-26 16:07:57
唔會
2020-10-26 16:26:09
當然會
pandas唔係formula, 你assign range(len(df))df.index+5000冇分別
2020-10-26 16:31:51
即係?
2020-10-26 17:03:22
呢個係唔係加入5000?
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞