python Csv問題
無糖零可樂 2020-10-25 21:23:34 有冇得就咁用DataFrame黎加新一個col?

Ads

Cyborgman 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),唔會太差
Cyborgman 2020-10-25 22:19:19 介唔介意講多啲,想知下你本身份工同coding有冇關係?

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

反正最後係方便咗自己
:^(
美c朗尼馬達 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 11:01:05 此回覆已被刪除
咁辛苦為乜呀 2020-10-26 13:09:31 parse csv / parse website data
呢D咁易
Google一搵都大把tutorial啦
:^(

Ads

不撤。不散 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
起碼知係邊行錯
Cyborgman 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?

Ads

不撤。不散 2020-10-26 16:07:57 唔會
Cyborgman 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?
:^(