用Pandas将列表附加到csv中的特定列

2024-09-29 21:31:50 发布

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

嗨,伙计们,如果可能的话,我可以对熊猫提供一些帮助:我有一个现有的csv,其结构如下:

column1  column2 column3 column4 
1         ww        1     Sam 
2         ss        2     Bill
                    3     Jack 

list = [[4,Jin],[5,Carl]]

我想在第3列和第4列下写入csv,得到以下结果:`

^{pr2}$

有什么帮助吗?我知道熊猫会看穿一排排的,但这是怎么做到的呢?在


Tags: csvsam结构sslistjackjincolumn1
3条回答

您可以使用^{}进行此操作:

#   column1 column2  column3 column4
# 0       1      ww        1     Sam
# 1       2      ss        2    Bill
# 2    None    None        3    Jack

lst = [[4, 'Jin'], [5, 'Carl']]

app = pd.DataFrame([[None, None, x[0], x[1]] for x in lst],
                   columns=['column'+str(i) for i in range(1, 5)])

df = df.append(app, ignore_index=True)

#   column1 column2  column3 column4
# 0       1      ww        1     Sam
# 1       2      ss        2    Bill
# 2    None    None        3    Jack
# 3    None    None        4     Jin
# 4    None    None        5    Carl
matrix = pd.read_csv(survey_dictionary)#, encoding="UTF-8")
fistElem = None
nullVector = matrix['column3'].isnull()
incr = 0
for isNull in nullVector:
    if isNull == True:
        fistElem = incr
        break
    incr = incr + 1
for source in list:
    if source[0] != fistElem:
        matrix.at[fistElem,'column3'] = source[0]
        matrix.at[fistElem,'column4'] = source[1]
matrix.to_csv(survey_dictionary, index =False, encoding='utf-8-sig')

我觉得这更干净

数据

# Your csv:
import io    
csvstr = """column1;column2;column3;column4
             1;    ww   ;     1 ;   Sam
             2;    ss   ;     2 ;   Bill
              ;         ;     3 ;   Jack"""

inputcsv = io.StringIO(csvstr)
pdcsv = pd.read_csv(inputcsv, delimiter=';')

#   column1 column2  column3 column4
# 0       1      ww        1     Sam
# 1       2      ss        2    Bill
# 2    None    None        3    Jack

要附加的数据

只使用所需的第3列和第4列创建要追加的DataFrame行:

^{pr2}$

append使用sort=True,可选使用ignore_index=True(如果需要删除并重置旧索引)。在

pdcsv = pdcsv.append(newrows, sort=True, ignore_index=True)
pdcsv 

#   column1 column2  column3 column4
# 0       1      ww        1     Sam
# 1       2      ss        2    Bill
# 2    None    None        3    Jack
# 3    None    None        4     Jin
# 4    None    None        5    Carl

或使用pd.concat与上述相同

pdcsv = pd.concat([pdcsv, newrows], sort=True, ignore_index=True)

相关问题 更多 >

    热门问题