Pandas 如何使用一列的值访问另一列中的值?
如何使用一列的值访问另一列的值Pandas 如何使用一列的值访问另一列中的值?,pandas,Pandas,如何使用一列的值访问另一列的值 import numpy impot pandas numpy.random.seed(123) df = pandas.DataFrame((numpy.random.normal(0, 1, 10)), columns=[['Value']]) df['bleh'] = df.index.to_series().apply(lambda x: numpy.random.randint(0, x + 1, 1)[0]) 那么,如何访问每行的“bleh”值呢
import numpy
impot pandas
numpy.random.seed(123)
df = pandas.DataFrame((numpy.random.normal(0, 1, 10)), columns=[['Value']])
df['bleh'] = df.index.to_series().apply(lambda x: numpy.random.randint(0, x + 1, 1)[0])
那么,如何访问每行的“bleh”值呢
df.Value.iloc[df['bleh']]
编辑:
感谢@ScottBoston。我的DF构造函数有一层[]
太多了。
正确答案是:
numpy.random.seed(123)
df = pandas.DataFrame((numpy.random.normal(0, 1, 10)), columns=['Value'])
df['bleh'] = df.index.to_series().apply(lambda x: numpy.random.randint(0, x + 1, 1)[0])
df['idx_int'] = range(df.shape[0])
df['haa'] = df['idx_int'] - df.bleh.values
df['newcol'] = df.Value.iloc[df['haa'].values].values
尝试:
输出:
[-1.0856306033005612,
0.9973454465835858,
0.28297849805199204,
-1.506294713918092,
-0.5786002519685364,
1.651436537097151,
-2.426679243393074,
-0.42891262885617726,
1.265936258705534,
-0.8667404022651017]
您的数据帧构造函数仍然需要修复
您正在寻找:
df.set_index('bleh')
输出:
Value
bleh
0 -1.085631
1 0.997345
2 0.282978
1 -1.506295
4 -0.578600
0 1.651437
0 -2.426679
4 -0.428913
1 1.265936
7 -0.866740
如果是这样,您的dataframe构造函数中有一组额外的[]
np.random.seed(123)
df = pd.DataFrame((np.random.normal(0, 1, 10)), columns=['Value'])
df['bleh'] = df.index.to_series().apply(lambda x: np.random.randint(0, x + 1, 1)[0])
columns
dataframe中的paramater接受的是一个列表,而不是一个列表。non(很抱歉这个问题让人困惑):我想要一个系列
,它的第一个条目是[df.Value.iloc[df['bleh'].iloc[s].values],用于范围(df.shape[0])中的s
,但只包含数值(不是列名)。两者都不是(很抱歉回答这个令人困惑的问题):我想要一个列,其中包含df['bleh'].values]中s的条目[df.Value.iloc[s].values[0][0],但只包含数值(而不是列名)。
np.random.seed(123)
df = pd.DataFrame((np.random.normal(0, 1, 10)), columns=['Value'])
df['bleh'] = df.index.to_series().apply(lambda x: np.random.randint(0, x + 1, 1)[0])