gpt4 book ai didi

python - 当 slice 有一行结果时返回 pandas.DataFrame

转载 作者:行者123 更新时间:2023-11-28 17:01:26 25 4
gpt4 key购买 nike

考虑以下几点:

>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame(np.random.randn(5, 2), index=[100, 101, 101, 102, 103])
>>> idx = set(df.index)
>>> for id_ in idx:
... slice = df.loc[id_]
... # stuff with slice
>>>

我需要在 for 循环中使用 slice 做一些事情,但这些事情是基于 slice 是一个 DataFrame。当有多个匹配记录时,slice 是一个 DataFrame,否则是一个 Series。我知道 pandas.SeriesSeries.to_frame 方法但是 pandas.DataFrame 没有(所以我不能只调用 df.loc [id_].to_frame()).

测试 slice 并将其强制转换为 DataFrame 的最佳方法是什么?

(真的像测试if isinstance(df.loc[id_], pd.Series)那么简单吗?)

最佳答案

你可以循环 groupby按索引的对象(level=0):

for i, df1 in df.groupby(level=0):
print (df1)

0 1
100 -0.812375 -0.450793
0 1
101 1.070801 0.217421
101 -1.175859 -0.926117
0 1
102 -0.993948 0.586806
0 1
103 1.063813 0.237741

您的解决方案应该通过选择双 [] 返回 DataFrame 来更改:

idx = set(df.index)
for id_ in idx:
df1 = df.loc[[id_]]
print (df1)

0 1
100 -0.775057 -0.979104
0 1
101 -1.549363 -1.206828
101 0.445008 -0.173086
0 1
102 1.488947 -0.79252
0 1
103 1.838997 -0.439362

关于python - 当 slice 有一行结果时返回 pandas.DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194995/

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