使用 python 与指定数量合并 2 个 csv 文件
Combine 2 csv file using python with the specified amount
我想合并 2 个文件的 CSV 数据,但不是所有数据。
例如:
a.csv + b.csv,其中 b.csv 有 20 个数据。但我只想从中获取 10 个数据,然后再获取 11-20 个数据。或者第一个10个和第二个10个
然后将前10条数据插入a.csv,后10条数据也插入a.csv
我的问题是如何只获取特定的总数据?
这是我的代码:
import pandas as pd
df1 = pd.read_csv('testNegatif.csv')
df2 = pd.read_csv('trainNegatif.csv', nrows=10)
output=df1.append(df2)
output.to_csv("output.csv", sep=',')
我期待我想要的结果 return,但实际结果是合并所有数据。
不使用 Pandas。读取每个文件的行;从一个文件的数据添加十行到另一个;将结果写入另一个文件。
with open('a.csv') as f:
data = f.readlines()
with open('b.csv') as f:
bdata = f.readlines()
data.extend(bdata[:10])
with open('output.csv', 'w'):
f.writelines(data)
如果文件很大并且您不想将全部内容读入内存,请使用一些 itertools 函数。
import itertools
with open('a.csv') as a, open('b.csv') as b, open('output.csv', 'w') as out:
first_ten = itertools.islice(b, 10)
for line in itertools.chain(a, first_ten):
out.write(line)
假设两个文件的列数相同。
import pandas as pd
import numpy as np
# Creating two dataframes with data that overlap, so we don't want all of the 'b' data.
# We want to strip off '3,4,5' as they exist in 'a' as well
# ----------Creating the data frames----------
a = [1,2,3,4,5]
b = [3,4,5,6,7,8,9,10]
dfa = pd.DataFrame(a)
dfa.to_csv('one.csv', index=False)
dfb = pd.DataFrame(b)
dfb.to_csv('two.csv', index = False)
# ---------------------------------------------
# --------Reading through the dataframes-------
one = pd.read_csv('one.csv')
two = pd.read_csv('two.csv')
# ---------------------------------------------
# Stripping off the first 3 data of 'two' the list
output = one.append(two[3:])
output.to_csv("output.csv", sep=',', index=False)
# ---------------------------------------------
我希望这能回答您的问题。对您来说重要的部分是 output = one.append(two[3:])
。有更复杂的方法可以做同样的事情,但这是最简单的。
如我的评论所述,您可以使用 nrows
import pandas as pd
df1 = pd.read_csv('testNegatif.csv')
df2 = pd.read_csv('trainNegatif.csv', nrows=10)
output=df1.append(df2)
output.to_csv("output.csv", sep=',')
有关更多选项,请参阅:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
我想合并 2 个文件的 CSV 数据,但不是所有数据。 例如: a.csv + b.csv,其中 b.csv 有 20 个数据。但我只想从中获取 10 个数据,然后再获取 11-20 个数据。或者第一个10个和第二个10个
然后将前10条数据插入a.csv,后10条数据也插入a.csv 我的问题是如何只获取特定的总数据?
这是我的代码:
import pandas as pd
df1 = pd.read_csv('testNegatif.csv')
df2 = pd.read_csv('trainNegatif.csv', nrows=10)
output=df1.append(df2)
output.to_csv("output.csv", sep=',')
我期待我想要的结果 return,但实际结果是合并所有数据。
不使用 Pandas。读取每个文件的行;从一个文件的数据添加十行到另一个;将结果写入另一个文件。
with open('a.csv') as f:
data = f.readlines()
with open('b.csv') as f:
bdata = f.readlines()
data.extend(bdata[:10])
with open('output.csv', 'w'):
f.writelines(data)
如果文件很大并且您不想将全部内容读入内存,请使用一些 itertools 函数。
import itertools
with open('a.csv') as a, open('b.csv') as b, open('output.csv', 'w') as out:
first_ten = itertools.islice(b, 10)
for line in itertools.chain(a, first_ten):
out.write(line)
假设两个文件的列数相同。
import pandas as pd
import numpy as np
# Creating two dataframes with data that overlap, so we don't want all of the 'b' data.
# We want to strip off '3,4,5' as they exist in 'a' as well
# ----------Creating the data frames----------
a = [1,2,3,4,5]
b = [3,4,5,6,7,8,9,10]
dfa = pd.DataFrame(a)
dfa.to_csv('one.csv', index=False)
dfb = pd.DataFrame(b)
dfb.to_csv('two.csv', index = False)
# ---------------------------------------------
# --------Reading through the dataframes-------
one = pd.read_csv('one.csv')
two = pd.read_csv('two.csv')
# ---------------------------------------------
# Stripping off the first 3 data of 'two' the list
output = one.append(two[3:])
output.to_csv("output.csv", sep=',', index=False)
# ---------------------------------------------
我希望这能回答您的问题。对您来说重要的部分是 output = one.append(two[3:])
。有更复杂的方法可以做同样的事情,但这是最简单的。
如我的评论所述,您可以使用 nrows
import pandas as pd
df1 = pd.read_csv('testNegatif.csv')
df2 = pd.read_csv('trainNegatif.csv', nrows=10)
output=df1.append(df2)
output.to_csv("output.csv", sep=',')
有关更多选项,请参阅:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html