Python dataframe-如何基于下一列值修改值
我有这样的数据帧:Python dataframe-如何基于下一列值修改值,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样的数据帧: 我想实现这样的目标: 如果下一列的值与同一行的第二列的值不同,如何加减号?在T2之后的列中,我们有W,但在第二列中是N,在这种情况下,我需要在数字之前减去 我搜索了很多文档,shift选项似乎很有用,但没有列的名称会导致问题。首先,我建议重命名NaN列,使它们具有唯一的名称,以免混淆(如NaN_0、NaN_1、NaN_2等) 你可以试试这样的东西: for i, col in enumerate(df.columns): if i < 2:
我想实现这样的目标: 如果下一列的值与同一行的第二列的值不同,如何加减号?在T2之后的列中,我们有W,但在第二列中是N,在这种情况下,我需要在数字之前减去
我搜索了很多文档,shift选项似乎很有用,但没有列的名称会导致问题。首先,我建议重命名NaN列,使它们具有唯一的名称,以免混淆(如NaN_0、NaN_1、NaN_2等) 你可以试试这样的东西:
for i, col in enumerate(df.columns):
if i < 2:
continue
if 'NaN' is in col:
continue
else:
mask = df.iloc[:, 1] != df.iloc[:, (i+1)]
df.loc[mask, col] = df[col]* (-1)
对于i,枚举中的列(df.列):
如果i<2:
持续
如果“NaN”在列中:
持续
其他:
掩码=df.iloc[:,1]!=df.iloc[:,(i+1)]
df.loc[mask,col]=df[col]*(-1)
我对pandas/python也很陌生,所以很可能存在一个更优雅/更快的解决方案来解决您的问题。您可以在python中使用iloc
for i in range(df.shape[0]):
if(df.iloc[i,1] != df.iloc[i,5]):
df.iloc[i,4] = df.iloc[i,4]*(-1)
据我所知,您的问题是,如果第2列的行值(即索引=1)和最后一列的值不同,则否定列“T2\n”中的值,否则保持相同的值。如果我在这个问题上错了,请纠正我 如果df是您的数据帧,那么请尝试
df['T2\n']=df.apply(λx:-1*x['T2\n']如果x.iloc[1]!=x.iloc[-1]否则x['T2\n'],轴=1)
注意:下次发布问题时,请以更好的方式解释您的问题谢谢您的解答!这是可行的,但是如果col中的'if'Nan'是正确的,而没有'if'Nan'是正确的