gpt4 book ai didi

python - Pandas : columns sample based on row value

转载 作者:行者123 更新时间:2023-11-30 22:21:53 25 4
gpt4 key购买 nike

例如我有这个数据框:

 d = {'data_1' : pd.Series([1., 2., 3., 4., 1], index=['a', 'b', 'c', 'd', 'class']),
'data_2' : pd.Series([5., 6., 7., 8., 0], index=['a', 'b', 'c', 'd', 'class']),
'data_3' : pd.Series([9., 10., 11., 12., 1], index=['a', 'b', 'c', 'd', 'class'])}
df = pd.DataFrame(d)

所以作为输出我得到:

    data_1  data_2  data_3
a 1.0 5.0 9.0
b 2.0 6.0 10.0
c 3.0 7.0 11.0
cls 1.0 0.0 1.0

我想做的是根据“cls”行中报告的值创建一个过滤器,并根据两个可能的类别将数据帧分成两部分

    data_1  data_3
a 1.0 9.0
b 2.0 10.0
c 3.0 11.0
cls 1.0 1.0

        data_2
a 5.0
b 6.0
c 7.0
cls 0.0

最佳答案

使用boolean indexing with loc - 第一个用于按条件选择所有列,第二个用于按 index 选择行:

df1 = df.loc[:, df.loc['class'] == 1]
df2 = df.loc[:, df.loc['class'] == 0]

还可以通过行class的所有唯一值创建字典:

s = df.loc['class']
dfs = {k:df[v.index] for k, v in s.groupby(s)}
print (dfs)

{0.0: data_2
a 5.0
b 6.0
c 7.0
d 8.0
class 0.0, 1.0: data_1 data_3
a 1.0 9.0
b 2.0 10.0
c 3.0 11.0
d 4.0 12.0
class 1.0 1.0}
<小时/>
print (list(dfs.keys()))
[0.0, 1.0]

print (dfs[0])
data_2
a 5.0
b 6.0
c 7.0
d 8.0
class 0.0:

print (dfs[1])
data_1 data_3
a 1.0 9.0
b 2.0 10.0
c 3.0 11.0
d 4.0 12.0
class 1.0 1.0

关于python - Pandas : columns sample based on row value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48503346/

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