所以我为我的问题创建了一个DataFrame:
import pandas as pd
import random
median = random.uniform(0, 1)
data = [[random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1)]]
df= pd.DataFrame(data, columns=["A","B"])
DataFrame看起来像这样:
A B
0 0.243965 0.363859
1 0.376634 0.968781
2 0.113388 0.555450
我想做的是查看A列第0行中的值是否大于先前定义的中位数。如果是这种情况,我想在B列第0行中应用某个公式,然后将结果保存到新的DataFrame中。如果不是这种情况,我想将B列第0行中的值应用于其他公式,并将其保存在新的DataFrame中。我想对每一行重复一次。
假设中位数等于0.3 使它变得简单的两个公式是:
x -0.1和X + 0.1
我试图这样解决:
for column in df[["A"]]:
if A > median:
new_Dataframe = B - 0.1
else:
new_Dataframe = B + 0.1
结果应如下所示,并且应该是一个新的DataFrame:
new_DataFrame
0 0.463859
1 0.868781
2 0.655450
我在访问所需的单元格时遇到问题,也不知道如何解决此问题。任何帮助表示赞赏。另外,实际的DataFrame具有更多的行,因此我不能像示例中那样对每一行进行计算。
答案 0 :(得分:0)
使用np.where:
new_dataframe=pd.DataFrame(np.where(df['A']>median,df['B']-0.1,df['B']+0.1),columns=['new_dataframe'])
print(new_dataframe)
new_dataframe
0 0.463859
1 0.868781
2 0.655450