【发布时间】:2021-06-11 01:37:54
【问题描述】:
对于每一列,需要找到它的平均值,如果值大于平均值,则将列值替换为 1,如果值小于平均值,则替换为 -1。最后,返回转换后的数据框,其列和索引与原始数据框相同。
Column 1 Column 2 Column 3 Column 4 Column 5 Column6
1 2 0 0 0 0 0
2 0 0 0 0 0 0
3 0 1 1 2 1 1
Expected output:
Column 1 Column 2 Column 3 Column 4 Column 5 Column6
1 1 -1 -1 -1 -1 -1
2 -1 -1 -1 -1 -1 -1
3 -1 1 1 1 1 1
code so far:
import pandas as pd
def mapvalues(filename):
mylist=[]
data=pd.read_csv(filename)
length=data.shape[0]
width=data.shape[1]
for i in range(3):
columns=data.iloc[:,i]
average=columns.mean()
for j in columns:
if j > average:
mylist.append(1)
else:
mylist.append(-1)
return(ListOfLists)
mapvalues(path)
我曾想过将这些值附加到列表列表中([[1,-1,-1],[-1,-1,1]]),然后将其转换为数据框,但我无法制作该列表。
任何见解都将受到高度赞赏。
【问题讨论】:
标签: python-3.x pandas list numpy