在csv文件的指定索引处添加具有不同值的列

2024-03-28 23:51:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想给一个给定的索引添加一个列,每次都有一个不同的值(这个值是根据行的值来计算的)。 这是我的csv示例:

org,repo_name,stars_count,fork_count,commit_count
freeCodeCamp,freeCodeCamp,303178,22005,23183,1703
vuejs,vue,140222,20150,3016,82
twbs,bootstrap,133730,65555,18714,46
...

到目前为止,我尝试了这里提供的答案:python pandas insert column

def func(f):
    files = f
    df = pd.read_csv(files)
    df = df.convert_objects(convert_numeric=True)
    df.insert(2, 'new', 1000)
    df.to_csv(files) 

我得到的结果是在索引2中添加了一行,值为1000。你知道吗

,org,repo_name,new,stars_count,fork_count,commit_count
freeCodeCamp,freeCodeCamp,303178,1000,22005,23183,1703
vuejs,vue,140222,1000,20150,3016,82
twbs,bootstrap,133730,1000,65555,18714,46
...

如何修改它,使之能够为每行添加一个特定的值,而不是到处添加1000?以及如何添加一个标题以便获得以下输出?请注意分数1。。。scoreN是int变量,而不是字符串,您可以假设它们已经被计算过了。你知道吗

org,repo_name,score,new,stars_count,fork_count,commit_count
freeCodeCamp,freeCodeCamp,303178,score1,22005,23183,1703
vuejs,vue,140222,score2,20150,3016,82
twbs,bootstrap,133730,score3,65555,18714,46
...

谢谢。你知道吗


Tags: csvnameorgdfcountrepofilesfork
2条回答

Pandas只在csv中插入一个新列,这几乎是过激的做法:

with open('input.csv') as fdin, open('output.csv', 'w', newline='') as fdout:
    rd = csv.DictReader(fdin)
    fields = list(rd.fieldnames)
    fields.insert(2, 'new')
    wr = csv.DictWriter(fdout, fieldnames=fields)
    wr.writeheader()
    for row in rd:
        row['new'] = compute_val(row)    # or compute_val(*row)
        wr.writerow(row)

您可以尝试以下方法:

len_df = len(df.index)+1
df["new"] = ["score"+str(i) for i in range(1,len_df)]

我希望这对你有帮助。 好的,这可能会有帮助:

df["new"].values[2] = score_value

注意,score\u值是int

相关问题 更多 >