读取csv时按块更新数据帧值

时间:2019-06-24 08:46:02

标签: python pandas

我需要逐块读取_csv并修改值以缩小,因为它太大了。例如“第一大道”,“华盛顿”->“第一大道华盛顿”。

我尝试通过使用所需的新值为每个块重新创建一个新的数据帧来将块更新为新块

df_etab = pd.DataFrame()
usecols = ["Siren",
        "Postal Code",
        "Status",
        "Street",
        "Street Number",
        "Street Type"]

for i,chunk in enumerate(pd.read_csv("siren_etab.csv", header=None, names=names, usecols=usecols, nrows=100000, chunksize=100000, low_memory=False, sep=',', error_bad_lines=False)):

    d = {'Siren': chunk[['Siren']],#ERROR CRASH HERE
         'Status': chunk[['Status']],#remain the same value
         'Name': df_unite[df_unite['siren'] == chunk[['Siren']]].loc[df_unite['denominationUsuelle1UniteLegale']]],#I use an other dataframe to match with the Siren key
         'Postal Code': chunk[['Postal Code']],#remain the same value
         'Street': str(chunk[['Street Number']])+chunk[['Street Type']]+chunk[['Street']],
        }#I dont take Status because I filter below by Status

    df = pd.DataFrame(data=d)
    df_etab = pd.concat([df_etab, df[df['Status'] == 'Open']])

每个块都是一个包含数字,类型和街道的数据框,我只需要在一个列中将其连接为1个值,而不是3个。 代码崩溃了:

'Siren': chunk.loc[chunk['Siren']]
  

KeyError:“ [Int64Index([325175,325175,325175,
  325175、325175、325175,\ n 1807254、1807254、5410220,   5410345,\ n ... \ n 42302141、42302158、42302166,   42302190、42302208、42302216,\ n 42302224、42302232,   42302257,42302265],\ n dtype ='int64',长度= 100000)]在   [索引]”

错误已解决

编辑:名称上的新错误

  

ValueError:无法使用包含NA / NaN值的向量建立索引

最后一个问题是,这是连接街道的好方法吗?

0 个答案:

没有答案