我试图访问DataFrame在Pandas中整个应用的函数中的行的索引.我有这样的事情:
df = pandas.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
>>> df
a b c
0 1 2 3
1 4 5 6
Run Code Online (Sandbox Code Playgroud)
我将定义一个访问具有给定行的元素的函数
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Run Code Online (Sandbox Code Playgroud)
我可以像这样申请:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Run Code Online (Sandbox Code Playgroud)
真棒!现在如果我想将索引合并到我的函数中呢?DataFrame添加之前的任何给定行的索引d都是Index([u'a', u'b', u'c', u'd'], dtype='object'),但我想要0和1.所以我不能只访问row.index.
我知道我可以在表中创建一个临时列来存储索引,但是我想知道它是否在某个行对象中存在.
类似的未回答问题:逐行处理 Dask 数据帧
我正在处理数百万行长的数据帧,所以现在我试图并行执行所有数据帧操作。我需要转换为 Dask 的一个这样的操作是:
for row in df.itertuples():
ratio = row.ratio
tmpratio = row.tmpratio
tmplabel = row.tmplabel
if tmpratio > ratio:
df.loc[row.Index,'ratio'] = tmpratio
df.loc[row.Index,'label'] = tmplabel
Run Code Online (Sandbox Code Playgroud)
在 Dask 中按索引设置值或有条件地在行中设置值的合适方法是什么?由于.loc不支持DASK项任务,似乎没有成为set_value,at[]或者iat[]在DASK无论是。
我尝试将map_partitions与assign一起使用,但我没有看到在行级别执行条件分配的任何能力。