gpt4 book ai didi

python - 根据数据帧值的真实性检索一系列列标题切片

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:31 25 4
gpt4 key购买 nike

考虑数据框 df

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice((0, 1), (3, 3)),
columns=['blah', 'meep', 'zimp'])
df

enter image description here


问题
df 的每一行切片 df.columns 的最有效方法是什么?
(对于这个例子和规模)

预期结果

0          [meep]
1 [blah]
2 [blah, zimp]
dtype: object

大规模

我确认@jezrael、@boud 和我的回答都产生了相同的结果。下面是我用来测试每​​个解决方案规模的数据框

from string import letters
import pandas as pd
import numpy as np

mux = pd.MultiIndex.from_product([list(letters), list(letters)])

df = pd.DataFrame(np.arange(52 ** 4).reshape(52 ** 2, -1) % 3 % 2, mux, mux)

boud 设置

s = pd.Series([[x] for x in df], df.columns)

pirsquared 设置

num = df.columns.nlevels
lvls = list(range(num))
rlvls = [x * -1 - 1 for x in lvls]
xsl = lambda x: x.xs(x.name).index.tolist()

结果

enter image description here

小 df

enter image description here

最佳答案

您可以使用 mul使用列表理解:

df = df.mul(df.columns.to_series(), axis=1)
print (df)
blah meep zimp
0 meep
1 blah
2 blah zimp

print ([list(filter(None, x)) for x in df.values.tolist()])
[['meep'], ['blah'], ['blah', 'zimp']]

print (pd.Series([list(filter(None, x)) for x in df.values.tolist()], index=df.index))
0 [meep]
1 [blah]
2 [blah, zimp]
dtype: object

关于python - 根据数据帧值的真实性检索一系列列标题切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818559/

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