gpt4 book ai didi

python - 根据 lengt 函数从 df 内的数组中检索值

转载 作者:行者123 更新时间:2023-12-01 01:38:05 25 4
gpt4 key购买 nike

如何从数据帧内的数组中检索前 n 个值,

其中 n 是同一数组的长度 - 1:(len[array] - 1)?

为了澄清我的目标,这是我迄今为止从我的 jupyter 笔记本中获得的代码:

import numpy as np
import pandas as pd
#load csv into pandas data frame
df1 = pd.read_csv(r"accounts.csv")
#define the range for clarity
xi = 60
xn = 70
df1['splt_acc'] = df1.Account.str.split('.')
df1['len'] = df1.splt_acc.apply(lambda x: len(x)-1).astype(int)
df1['parent'] = df1.splt_acc.str.join('.')
pd.DataFrame(df1)[xi:xn]

显示以下内容

    Account Rubriek       splt_acc  len parent
60 9.5 Inkoop [9, 5] 1 9.5
61 9.6 Overige res.. [9, 6] 1 9.6
62 9.7 Buitengewon.. [9, 7] 1 9.7
63 9.8 Incidentele.. [9, 8] 1 9.8
64 9.9 Vennootschap. [9, 9] 1 9.9
65 0.0.0 Terreinen [0, 0, 0] 2 0.0.0
66 0.0.1 Gebouwen [0, 0, 1] 2 0.0.1
67 0.0.2 Verbouwingen [0, 0, 2] 2 0.0.2
68 0.0.3 Machines [0, 0, 3] 2 0.0.3
69 0.0.4 Gereedschappen[0, 0, 4] 2 0.0.4

我想要的下一件事是:

df1['y'] = df1.splt_acc.apply(lambda splt_acc: splt_acc[0:df1.len])
pd.DataFrame(df1)[xi:xn]

这会导致以下错误:切片索引必须是整数或 None 或具有 index 方法

使用更简单的方法,我可以获得每行的结果,在本例中为第 60 行:

account = df1['Account'][60]
x = account.split('.')

if len(x) - 1 == 0:
y = 'null'
else:
y = x[0:(len(x)-1)]

print(y)

['9']

if y == 'null':
parent = 'null'
else:
parent = ".".join(str(x) for x in y)

print(parent)

9

但问题是,如何在 DataFrame 中获得相同的结果?

最佳答案

df1 = pd.DataFrame({'Account': ['9', '9.5', '9.6', '9.7', '9.8', '9.9', '0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4']})

df1.assign(
parent=df1['Account'].str.split('.').apply(lambda x: '.'.join(x[:-1]) or 'null'))
>>> df1
Account parent
0 9 null
1 9.5 9
2 9.6 9
3 9.7 9
4 9.8 9
5 9.9 9
6 0.0.0 0.0
7 0.0.1 0.0
8 0.0.2 0.0
9 0.0.3 0.0
10 0.0.4 0.0

关于python - 根据 lengt 函数从 df 内的数组中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52191323/

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