当前位置: 首页 > 面试题库 >

Pandas:将数据框附加到另一个df

郑茂勋
2023-03-14
问题内容

我在追加dataframe时遇到问题。我尝试执行此代码

df_all = pd.read_csv('data.csv', error_bad_lines=False, chunksize=1000000)
urls = pd.read_excel('url_june.xlsx')
substr = urls.url.values.tolist()
df_res = pd.DataFrame()
for df in df_all:
    for i in substr:
        res = df[df['url'].str.contains(i)]
        df_res.append(res)

当我尝试保存时df_res,会得到空的数据框。 df_all好像

ID,"url","used_at","active_seconds"
b20f9412f914ad83b6611d69dbe3b2b4,"mobiguru.ru/phones/apple/comp/32gb/apple_iphone_5s.html",2015-10-01 00:00:25,1
b20f9412f914ad83b6611d69dbe3b2b4,"mobiguru.ru/phones/apple/comp/32gb/apple_iphone_5s.html",2015-10-01 00:00:31,30
f85ce4b2f8787d48edc8612b2ccaca83,"4pda.ru/forum/index.php?showtopic=634566&view=getnewpost",2015-10-01 00:01:49,2
d3b0ef7d85dbb4dbb75e8a5950bad225,"shop.mts.ru/smartfony/mts/smartfon-smart-sprint-4g-sim-lock-white.html?utm_source=admitad&utm_medium=cpa&utm_content=300&utm_campaign=gde_cpa&uid=3",2015-10-01 00:03:19,34
078d388438ebf1d4142808f58fb66c87,"market.yandex.ru/product/12675734/spec?hid=91491&track=char",2015-10-01 00:03:48,2
d3b0ef7d85dbb4dbb75e8a5950bad225,"avito.ru/yoshkar-ola/telefony/mts",2015-10-01 00:04:21,4
d3b0ef7d85dbb4dbb75e8a5950bad225,"shoppingcart.aliexpress.com/order/confirm_order",2015-10-01 00:04:25,1
d3b0ef7d85dbb4dbb75e8a5950bad225,"shoppingcart.aliexpress.com/order/confirm_order",2015-10-01 00:04:26,9

urls看起来像

url
shoppingcart.aliexpress.com/order/confirm_order
ozon.ru/?context=order_done&number=
lk.wildberries.ru/basket/orderconfirmed
lamoda.ru/checkout/onepage/success/quick
mvideo.ru/confirmation?_requestid=
eldorado.ru/personal/order.php?step=confirm

当我res循环打印时,它不会为空。但是,当我尝试df_res在追加后循环打印时,它返回空的数据框。我找不到我的错误。我该如何解决?


问题答案:

如果您查看有关pd.DataFrame.append

将其他行附加到该帧的末尾, 返回一个新对象 。不在此框架中的列将作为新列添加。

(强调我的)。

尝试

df_res = df_res.append(res)

顺便说一句,请注意,通过连续的连接来创建DataFrame时,熊猫的效率不高。您可以尝试以下方法:

all_res = []
for df in df_all:
    for i in substr:
        res = df[df['url'].str.contains(i)]
        all_res.append(res)

df_res = pd.concat(all_res)

这首先创建所有部分的列表,然后最后一次从所有部分创建一个DataFrame。



 类似资料:
  • 我目前正在尝试创建一个小菜单,它可以在用户滚动时改变位置。我提出了一种样式-http://jsfiddle.net/piedoom/s8tyn/ 不过,这看起来很难看。我如何将每个文本div下面的每个点居中?我尝试过类似这样的操作,但没有效果。

  • 问题内容: 如何在不比较键的情况下将一个数组追加到另一个数组? 最后应该是: 如果我使用或,则将导致以下结果之一: 这样做应该是一件值得做的事,但是要用一种更优雅的方式: 问题答案: 是一种优雅的方式: 做类似的事情: 将不起作用,因为运算符实际上并未合并它们。如果它们的键与相同,则不会执行任何操作。

  • 问题内容: 我有两个长度未知的数组,我只想将一个附加到另一个的末尾,即: 我曾尝试使用,但似乎无法使其正常工作。 问题答案: 使用,应类似于以下内容:

  • 是否可以附加到不包含任何索引或列的空数据帧? 我已经尝试过这样做,但最终还是得到了一个空的数据帧。 例如。 结果如下所示:

  • 问题内容: 我有一个数据框 我有另一个数据框df2 我希望我的最终数据框看起来像: 即从一个数据框映射到另一个创建新列 问题答案: + 假设您的数据框已经在上排序,则第一次排序调用是多余的,在这种情况下,您可以删除它。 / 或者,显式创建映射。如果您以后要使用它,它将起作用。

  • 虽然Swift中的link:Add a element to a array展示了如何将一个项目添加到一个数组中,但我的问题是如何将一个数组作为一个项目添加到另一个数组中。 我没有发现任何类似的问题——我有以下阵列: 和 我想将第一个数组作为一个整体附加到另一个数组,所以我得到这样的结果: 请注意,这不是预期的结果: 我将如何实现这一点?

  • 问题内容: 我要执行的操作类似于合并。例如,通过合并,我们得到一个数据帧,其中包含第一个AND第二个数据帧中存在的行。通过合并,我们得到一个数据帧,该数据帧在第一个或第二个数据帧中都存在。 我需要的是一个数据帧,其中包含第一个数据帧中存在的行而第二个数据帧中不存在的行?有快速而优雅的方法吗? 问题答案: 如下所示呢? 只要有一个非关键的通用命名列,就可以让在sufffexes上执行的工作(如果没有

  • 问题内容: 我有一个形状为(X,Y)的Pandas数据框对象,如下所示: 还有一个形状为(X,Z)的numpy稀疏矩阵(CSC),看起来像这样 如何将矩阵中的内容添加到新命名列中的数据框中,以使数据框最终像这样: 请注意,数据框现在具有形状(X,Y + 1),并且矩阵中的行是数据框中的元素。 问题答案: import numpy as np import pandas as pd import s