如何通过python合并csv文件中的不同行

时间:2018-11-21 04:29:47

标签: python-3.x

我已经从网站上删除了一些内容,并将数据保存到一些不同的csv文件中。

例如

csv1:-

row number    time              price
1              2018/01/01        12
2              2018/01/02        15

csv2:-

row number    time              address
1              2018/01/01        MI
2              2018/01/02        AR

现在,如何将两个csv文件合并为一个csv文件,以下是新csv的格式。

row number    time              price         address
1              2018/01/01        12             MI
2              2018/01/02        15             AR

有人可以帮我吗?

这个问题使我困惑了几天。

非常感谢!

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:0)

您可以使用熊猫df.append()。您可以引用this answer

如果这些CSV具有不同的列,请分别将每个CSV读取为Pandas DataFrame,然后从以前创建的单个DataFrame引用列创建新的DataFrame。

答案 1 :(得分:0)

对于您的情况,您还可以使用pd.merge熊猫命令:

In [488]: df1 = pd.read_csv('/home/mayankp/Documents/Personal/stackoverflow/csv1.csv')

In [498]: df1
Out[498]: 
   row_number        time  price
0           1  2018/01/01     12
1           2  2018/01/02     15

In [490]: df2 = pd.read_csv('/home/mayankp/Documents/Personal/stackoverflow/csv2.csv')

In [499]: df2
Out[499]: 
   row_number        time address
0           1  2018/01/01      MI
1           2  2018/01/02      AR

In [500]: pd.merge(df1,df2, on=['row_number','time'])
Out[500]: 
   row_number        time  price address
0           1  2018/01/01     12      MI
1           2  2018/01/02     15      AR

答案 2 :(得分:0)

尝试以下操作:

import pandas as pd

csv1 = pd.read_csv("file1.csv")
csv2 = pd.read_csv("file2.csv")

csv_out = csv1.merge(csv2, on=['row number','time'])
csv_out.to_csv("file_out.csv", index=False)

希望有帮助。

答案 3 :(得分:0)

我知道您有csv文件,但在这里我只是展示并尝试通过手动创建DataFrame(如您在问题中提到的那样)来为您提供帮助。

  

下面是您要查找的代码。

>>> import pandas as pd
>>>
>>> dri = pd.date_range("2018/01/01", periods=2, freq="d")
>>>
>>> df = pd.DataFrame({"time": dri, "price": [12, 15]}, index = [1, 2])
>>> df
        time  price
1 2018-01-01     12
2 2018-01-02     15
>>>
>>> df2 = pd.DataFrame({"time": dri, "address": ["MI", "AR"]}, index=[1, 2])
>>> df2
        time address
1 2018-01-01      MI
2 2018-01-02      AR
>>>
>>> # https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html
...
>>>
>>> df.merge(df2, on = "time", how = "inner", left_index = True)
        time  price address
1 2018-01-01     12      MI
2 2018-01-02     15      AR
>>>

默认情况下,熊猫在DataFrame的左侧不包含索引标签。如果您确实希望像您提到的那样为DataFrame的索引添加标签(在您的情况下为row number),请查看下面在Python交互式终端上执行的语句。

>>> df.index.name = "row number"
>>> df
                 time  price
row number
1          2018-01-01     12
2          2018-01-02     15
>>>
>>> df2.index.name = "row number"
>>>
>>> df2
                 time address
row number
1          2018-01-01      MI
2          2018-01-02      AR
>>>
>>> df.merge(df2, on = "time", how = "inner", left_index = True)
                 time  price address
row number
1          2018-01-01     12      MI
2          2018-01-02     15      AR
>>>