我已经从网站上删除了一些内容,并将数据保存到一些不同的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
有人可以帮我吗?
这个问题使我困惑了几天。
非常感谢!
答案 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(如您在问题中提到的那样)来为您提供帮助。
DataFrame:-https://www.tutorialspoint.com/python_pandas/python_pandas_dataframe.htm
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html-在这里您可以访问并找到有关在DataFrame上定义的
merge()
方法的参数的更多信息。
下面是您要查找的代码。
>>> 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
>>>