【问题标题】:Compare Array numbers with DF column. If exists in df, than write to new df将数组编号与 DF 列进行比较。如果存在于 df 中,则写入新的 df
【发布时间】:2021-04-25 16:22:29
【问题描述】:

我有以下问题: 我有一个具有多个 ID 的数组,并且我在 df 中有一个列,我想用它来匹配这些 ID。 如果相等,则该行应写入新的 DF。

这是我的数组,叫做 manhatten_ids

array([  4,  12,  13,  24,  41,  42,  43,  45,  48,  50,  68,  74,  75,
    79,  87,  88,  90, 100, 103, 104, 105, 107, 113, 114, 116, 120,
   125, 127, 128, 137, 140, 141, 142, 143, 144, 148, 151, 152, 153,
   158, 161, 162, 163, 164, 166, 170, 186, 194, 202, 209, 211, 224,
   229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 243, 244, 246,
   249, 261, 262, 263], dtype=int64)

这是我的框架,名为 df_trips:

因此,如果一个 DOLocation ID 与一个数组值匹配,它应该将包含所有列的整行写入一个新的 df,称为 newdf。

这个其实不行:

newdf=df.loc[df_trips['DOLocationID'].isin(manhatten_ids)]

有人有想法吗?

【问题讨论】:

  • newdf['column name']=df.loc[df['column'].isin(array),'column name']?
  • 我想将 df 列与数组值进行比较.. 但在它应该将包含所有特征的整行保存到新框架中
  • 请在MRE - Minimal, Reproducible, Example 中包含示例数据和预期输出。
  • 好的,它现在在
  • df 应该是df_trips 不是吗? new_df = df_trips.loc[df_trips['DOLocationID'].isin(manhattan_ids)]

标签: python pandas data-science jupyter


【解决方案1】:

所以我们可以通过使用枚举函数迭代地执行此操作,两次查看位置列的值,如下所示:

newdf = pd.DataFrame()
row_ind = 0 #row of new dataframe that you will write on

vals = df.DOLocationID.values #get values of location column
for i, val in enumerate(vals):
    if val in manhatten_ids: #check if location val is in manhatten ids
        newdf.loc[row_ind] = df.iloc[i] #assign new row of newdf to current row in df
        row_ind += 1
    
    

【讨论】:

    猜你喜欢
    • 2019-11-27
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多