【问题标题】:Get the particular rows in Python获取 Python 中的特定行
【发布时间】:2017-02-18 00:36:05
【问题描述】:

我有两个 csv 文件。

一个如下:

"CONS_NO","DATA_DATE","KWH_READING","KWH_READING1","KWH"
"1652714033","2015/1/12","4747.3800","4736.8000","10.5800"
"3332440062","2015/1/12","408.6800","407.8200","0.8600"
"7804314033","2015/1/12","1794.3500","1792.5000","1.8500"
"0114314033","2015/1/12","3525.2000","3519.4400","5.7600"
"1742440062","2015/1/12","3097.1900","3091.4100","5.7800"
"8230100023","2015/1/12","1035.0500","1026.8400","8.2100"

总共大约 600 万行。

另一种如下:

6360609057
8771218657
1338004100
2500009393
9184968250
9710581700
8833903141

总共大约一万行。

第二个 csv 文件只有 CONS_NO。我想在第一个 csv 文件中找到与第二个 csv 文件中的数字相对应的行;并在 Python 中删除第一个 csv 文件中的其他行。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 熊猫支持joining two DataFrames。如果遇到困难,请尝试自行解决并使用一些代码编辑问题。
  • 谢谢,我试试看。

标签: python csv pandas numpy


【解决方案1】:

可以使用pandas中的merge方法合并两个DataFrame

我将您的示例数据更改为以下内容:

test1.csv 是:

"CONS_NO","DATA_DATE","KWH_READING","KWH_READING1","KWH"
"1652714033","2015/1/12","4747.3800","4736.8000","10.5800"
"3332440062","2015/1/12","408.6800","407.8200","0.8600"
"7804314033","2015/1/12","1794.3500","1792.5000","1.8500"
"8833903141","2015/1/12","3525.2000","3519.4400","5.7600"
"1742440062","2015/1/12","3097.1900","3091.4100","5.7800"
"8833903141","2015/1/12","1035.0500","1026.8400","8.2100"

`test2.csv' 是:

6360609057
8771218657
1338004100
2500009393
9184968250
9710581700
8833903141

您现在可以使用以下代码合并它们:

import pandas as pd

df1 = pd.read_csv('test1.csv')
df2 = pd.read_csv('test2.csv', names=['CONS_NO'])

pd.merge(df1, df2, on='CONS_NO')

它给出以下输出:

    CONS_NO     DATA_DATE   KWH_READING KWH_READING1    KWH
0   8833903141  2015/1/12   3525.20     3519.44         5.76
1   8833903141  2015/1/12   1035.05     1026.84         8.21

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 2021-02-21
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2020-07-23
    • 2019-08-01
    相关资源
    最近更新 更多