gpt4 book ai didi

python - Pandas 将过滤后的行附加到另一个 DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 18:32:51 29 4
gpt4 key购买 nike

我有 2 个 pandas 数据框 dfdf_min。我对 df 应用了一些过滤器,这会生成一行数据,我想将该行附加到 df_min。我尝试使用循环遍历 df,并尝试使用 loc 将行附加到 df_min 。对于我使用 loc 的行,我不断收到与 DataFrame 不兼容的索引器 ValueError。我想我没有正确使用 loc 。完成我想做的事情的最佳方法是什么?

i = 0
for elem in vehicles:
for state in limit_states:
a = df[(df.VEHICLE == elem) & (df.LIMIT_STATE == state)]
df_min.loc[i] = a[(a.RF == np.min(a.RF))].head(1) #results in a single row
i = i + 1

编辑:我还尝试了以下方法而不是loc,但得到了相同的错误:

df_min.ix[i] = a[(a.RF == np.min(a.RF))].head(1)

编辑2:尝试了以下操作,得到了“第一个参数必须是类似pandas对象的列表,这次你传递了一个类型为“DataFrame”的对象”错误。

for elem in vehicles:
for state in limit_states:
a = df[(df.VEHICLE == elem) & (df.LIMIT_STATE == state)]
df_min = pd.concat(a[(a.RF == np.min(a.RF))].head(1))

最佳答案

也许这样的东西会有帮助:

df_min = pd.concat([ df[(df.VEHICLE == elem) & (df.LIMIT_STATE == state)]
for elem in vehicles for state in limit_states ])

编辑:

xs = [ df[(df.VEHICLE == elem) & (df.LIMIT_STATE == state)]
for elem in vehicles for state in limit_states ]
df_min = pd.concat([ a[(a.RF == np.min(a.RF))].head(1) for a in xs ])

根据列表vehicleslimit_states,您可能还可以使用groupby实现您想要做的事情;像这样:

fn = lambda a: a[(a.RF == np.min(a.RF))].head(1)
df.groupby( ['VEHICLE', 'LIMIT_STATE'] ).apply( fn )

关于python - Pandas 将过滤后的行附加到另一个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22120286/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com