Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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_Csv_Pandas_Dataframe - Fatal编程技术网

Python 如何使用pandas添加重复的csv列

Python 如何使用pandas添加重复的csv列,python,csv,pandas,dataframe,Python,Csv,Pandas,Dataframe,我有一个CSV,其中只有一列包含域,类似如下: google.com yahoo.com cnn.com toast.net 我想添加一个重复的列,并添加标题域和匹配项,这样我的csv将如下所示: domain matching google.com google.com yahoo.com yahoo.com cnn.com cnn.com toast.net toast.net 我使用pandas在python脚本中尝试了以下内容: df = rea

我有一个
CSV
,其中只有一列包含
,类似如下:

google.com
yahoo.com
cnn.com
toast.net
我想添加一个重复的列,并添加标题
匹配项
,这样我的
csv
将如下所示:

domain       matching
google.com   google.com
yahoo.com    yahoo.com
cnn.com      cnn.com
toast.net    toast.net
我使用pandas在python脚本中尝试了以下内容:

df = read_csv('temp.csv')
df.columns = ['domain', 'matching']
df['matching'] = df['domain']
df.to_csv('temp.csv', index=False)
但我得到了以下错误:

“ValueError:长度不匹配:预期轴有1个元素,新值有2个元素”


我想我需要先添加另一列?我可以使用pandas执行此操作吗?

您可以将参数
name
添加到:

您可以修改解决方案,但丢失了第一行,因为它被读取为列名:

df = pd.read_csv(io.StringIO(temp))
print (df)
#real data
#df = pd.read_csv('temp.csv')
  google.com
0  yahoo.com
1    cnn.com
2  toast.net

df.columns = ['domain']
df['matching'] = df['domain']

df.to_csv('temp.csv', index=False)
但您可以向添加参数
header=None
并从
df.columns=['domain','matching']
中删除第二个值,因为第一个
DataFrame
只有一列:

import pandas as pd
import io

temp=u"""google.com
yahoo.com
cnn.com
toast.net"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), header=None)
print (df)
#real data
#df = pd.read_csv('temp.csv', header=None)
            0
0  google.com
1   yahoo.com
2     cnn.com
3   toast.net

df.columns = ['domain']
df['matching'] = df['domain']

df.to_csv('temp.csv', index=False)

您只需将
io.StringIO(temp)
更改为
'temp.csv'
,它就会工作得很好。我遇到的问题是它需要一个unicode输入,这是您用temp=u“”指定的。。。但是我将csv作为输入,所以当我这样做时:df=pd.read\u csv(io.StringIO('temp.csv'),header=None),我会得到错误,“TypeError:initial\u值必须是unicode或None,而不是str”
import pandas as pd
import io

temp=u"""google.com
yahoo.com
cnn.com
toast.net"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), header=None)
print (df)
#real data
#df = pd.read_csv('temp.csv', header=None)
            0
0  google.com
1   yahoo.com
2     cnn.com
3   toast.net

df.columns = ['domain']
df['matching'] = df['domain']

df.to_csv('temp.csv', index=False)