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)