0

Python:如何获取唯一 ID 并从第 1 列(ID)和第 3 列(描述)中删除重复项,然后获取第 2 列的中位数

ID 价值 描述
123456 116 xx
123456 117 xx
123456 113 xx
123456 109 xz
123456 108 xz
123456 98 xz
121214 115 美国广播公司
121214 110 美国广播公司
121214 103 美国广播公司
121214 117 abz
121214 120 abz
121214 125 abz
151416 114 zxc
151416 135 zxc
151416 127 zxc
151416 145 zxm
151416 125 zxm
151416 121 zxm

已处理的表应如下所示:

ID xx xz 美国广播公司 abz zxc zxm
123456 110 151 0 0 0 0
121214 0 0 132 113 0 0
151416 0 0 0 0 124 115
4

4 回答 4

0

也许这种方法对你有用?

d = {'ID': [1,1,2,3,3,4,4,4,4,5,5], 'Value': [5,6,7,8,9,7,8,5,1,2,4]}
df = pd.DataFrame(data=d)
unique = set(df['ID'])
value_mean = []
for i in unique:
  a = df[df['ID']==i]['Value']
  a = a.mean()
  value_mean.append(a)
于 2021-04-24T14:16:37.607 回答
0

那么你有例如6个'ID',值为'123456'。如果您只想要唯一的“ID”,则需要删除 5 个“ID”行,这样做您将不再有重复的“描述”值。问题是,您想要唯一的 ID 还是唯一的描述值(或两者的唯一组合)?

于 2021-04-24T14:54:57.063 回答
0

我采用了均值的方法,但是您的“预期输出”示例没有给出均值。是不是我误会你的意思了?

pd.pivot_table(DF, 'Value', index='ID', columns='Description')

应该做的伎俩,默认数学函数是平均值,所以这是理想的。可以在此处找到更多信息(请注意,DF 是要导入的数据框)。

于 2021-04-24T15:11:49.707 回答
0

可能有更多的选择来解决这个问题。您可以做的是将 ID 和 Description 合并到一个新列中,并删除 DataFrame 中的重复项。希望这会有所帮助。

import pandas as pd
a = {'ID': [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5],
     'Value': [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6],
     'Description': ['a','a','b','b','c','d','d','a','c','d','e','e','e','a','b']}
df = pd.DataFrame(data=a)
unique_combined = []
for i in range(len(df)):
  unique_combined.append((str(df.iloc[i]['ID'])+ df.iloc[i]['Description']))
df['un'] = unique_combined
df.drop_duplicates(subset=['un'])
于 2021-04-24T15:44:53.140 回答