gpt4 book ai didi

python - 匹配数据帧行中的值

转载 作者:行者123 更新时间:2023-11-30 22:39:46 24 4
gpt4 key购买 nike

我有一个数据框(df),如下所示:

name  type    cost
a apples 1
b apples 2
c oranges 1
d banana 4
e orange 6

除了使用 2 个 for 循环之外,还有一种方法可以循环遍历列表中的每个名称和类型并将其相互比较,并且名称不是其本身(A 与 A),类型是相同的(苹果与苹果) )并且它不是同一对的重复,而是相反,例如如果我们有 A 与 B,我不想看到 B 与 A,生成一个看起来的输出列表:

name1, name2, status
a b 0
c e 0

其中前 2 个元素是条件匹配的名称,第三个元素始终为 0。

我尝试用 2 个 for 循环来做到这一点(见下文),但如果我们已经有了 a 与 b,则无法让它拒绝 b 与 a。

def pairListCreator(staticData):
for x, row1 in df.iterrows():

name1 = row1['name']
type1= row1['type']

for y, row2 in df.iterrows():
name2 = row['name']
type2 = row['type']

if name1<> name2 and type1 = type2:
pairList = name1,name2,0

最佳答案

类似这样的

import pandas as pd

# Data
data = [['a', 'apples', 1],
['b', 'apples', 2],
['c', 'orange', 1],
['d', 'banana', 4],
['e', 'orange', 6]]

# Create Dataframe
df = pd.DataFrame(data, columns=['name', 'type', 'cost'])
df.set_index('name', inplace=True)

# Print DataFrame
print df

# Count number of rows
nr_of_rows = df.shape[0]

# Create result and compare
res_col_nam = ['name1', 'name2', 'status']
result = pd.DataFrame(columns=res_col_nam)

for i in range(nr_of_rows):
x = df.iloc[i]

for j in range(i + 1, nr_of_rows):
y = df.iloc[j]

if x['type'] == y['type']:
temp = pd.DataFrame([[x.name, y.name, 0]], columns=res_col_nam)
result = result.append(temp)

# Reset the index
result.reset_index(inplace=True)
result.drop('index', axis=1, inplace=True)

# Print result
print 'result:'
print result

输出:

        type  cost
name
a apples 1
b apples 2
c orange 1
d banana 4
e orange 6
result:
name1 name2 status
0 a b 0.0
1 c e 0.0

关于python - 匹配数据帧行中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43046593/

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