Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PANDAS为csv创建空列并写入文件_Python_Pandas_Csv - Fatal编程技术网

Python 使用PANDAS为csv创建空列并写入文件

Python 使用PANDAS为csv创建空列并写入文件,python,pandas,csv,Python,Pandas,Csv,目前,我正在从csv(字符串类型)中获取数据,拆分字符串(int类型),并将字符串的每个整数放在自己的列中。字符串的长度都相同,到目前为止,我有以下代码: 将熊猫作为pd导入 列名称=['W1','W2','W3','W4','W5','W6','W7','W8','W9','W10','W11','W12','W13','W14','W15','W16', ‘W17’、‘W18’、‘W19’、‘W20’] db=pd.read\u csv(数据库文件,跳过空白行=True, 名称=['A','

目前,我正在从csv(字符串类型)中获取数据,拆分字符串(int类型),并将字符串的每个整数放在自己的列中。字符串的长度都相同,到目前为止,我有以下代码:

将熊猫作为pd导入
列名称=['W1','W2','W3','W4','W5','W6','W7','W8','W9','W10','W11','W12','W13','W14','W15','W16',
‘W17’、‘W18’、‘W19’、‘W20’]
db=pd.read\u csv(数据库文件,跳过空白行=True,
名称=['A','B','C','D'],标题=0)
db[column_names]=db['B'].str.split(',',expand=True)
此代码在某种程度上确实有效,B列中的值从列表中分割出来,并记录到dataframe中的列中,我可以通过打印列值来检查这一点,例如打印值的位置为
print(db[“W2”]

然而,我的问题是,数据被记录到数据框中,而不是实际的CSV。列['W1','W2','W3','W4','W5','W6','W7','W8','W9','W10','W11','W12','W13','W14','W15','W16','W17',W18','W19',W20']不在CSV中,我试图使用它们来解决这个问题

db = pd.concat([db, pd.DataFrame(columns=column_names)])
我也试过使用

db[column_names] = db['Winning_Numbers'].str.split(',', expand=True).to_csv(databasefile, index=False)
这确实有效*,问题是它会覆盖CSV中的所有信息

无论如何,谢谢你的阅读!我将感谢你对这个问题的任何帮助

更新: 所需的功能是具有此CSV

如果B列是一个字符串,则要拆分B列中的字符串,并获取字符串中的每个数字并将其放入自己的列中,这是由以下代码完成的

db[column_names]=db['B'].str.split(',',expand=True)
这是可行的,我能够读取每列中的数据,[W1-W20]但是CSV当前只有4列,我试图将数据框中的信息附加到CSV中,但它只会用

to_csv

我尝试对to_csv使用附加模式,但从未将数据框中的数据附加到csv,因此希望这能更清楚地说明如何将数据框中的数据附加到csv中(将更多列添加到csv并将数据附加到这些列)

恐怕我仍然不完全理解所需的输出,但这可能有助于您开始。它将原始数据和新列附加到csv中的现有数据

import pandas as pd

column_names = ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10', 'W11', 'W12', 'W13', 'W14', 'W15', 'W16',
                'W17', 'W18', 'W19', 'W20']

db = pd.read_csv(databasefile, skip_blank_lines=True, names=['A', 'B', 'C', 'D'], header=None)
db[column_names] = db['B'].str.split(',', expand=True)

with open(databasefile, 'a') as f:
    db.to_csv(f, header=False, index=False)
如果要用扩展值替换字符串列“B”,可以使用:

db[['A']+column_names+['C','D']].to_csv(f, header=False, index=False)

db
是一个数据帧,一旦您从csv读取它(即创建它并填充csv文件中的数据),它与csv文件没有任何连接。如果您想在csv中显示数据帧的更改,您必须使用
将数据帧写回csv以_csv
(正如您已经尝试过的那样)。这将以您使用的方式覆盖该文件。有关附加,请参阅。我查看了发布的解决方案,仍然没有收到任何在CSV中附加新列和信息的结果。我尝试将
to_CSV
函数模式设置为append,而不是write以及显示的其他方法。给出的错误是:de>pandas.errors.ParserError:Error tokenized data.C Error:saw 21第240行预期有4个字段,我仍然不完全理解您要做什么:从
数据库文件
读取数据,然后将数据(部分)写回同一文件?您只想将文件格式转换为csv格式吗?您可以共享您的数据库文件吗(或者它的前几行以及第240行)以及所需的结果?当然,我会在整体线程中发布它。您可以将结果写入其他csv吗?