我有一个像这样的数据框:

date    time    job.filename    job.id  1,3,5-trimethylbenzene  1,3-butadiene   1,4-diaminobutane   1,5-diaminopentane  1,5-pentanedial 1-butanamine    ... nitrosopiperidine   nitrosopyrrolidine  pentanal    propanal    propylbenzene   propylene glycol methyl ether acetate   styrene tetrahydropyrrole   toluene xylenes + ethylbenzene
0   20161214    75506   IMAT list 1-3581-0-20161214-075506.csv  3581    NaN 0.1914  NaN NaN NaN NaN ... 0.5742  NaN NaN NaN NaN NaN NaN 0.3631  NaN NaN
1   20161214    80856   IMAT list 1-3585-0-20161214-080856.csv  3585    NaN 0.2353  NaN NaN NaN NaN ... 12.8760 NaN NaN NaN NaN NaN NaN 1.0447  NaN NaN


我想将时间分配给每个值并形成一个元组:

date    time    job.filename    job.id  1,3,5-trimethylbenzene  1,3-butadiene   1,4-diaminobutane   1,5-diaminopentane  1,5-pentanedial 1-butanamine    ... nitrosopiperidine   nitrosopyrrolidine  pentanal    propanal    propylbenzene   propylene glycol methyl ether acetate   styrene tetrahydropyrrole   toluene xylenes + ethylbenzene
0   20161214    75506   IMAT list 1-3581-0-20161214-075506.csv  3581    NaN (0.1914,75506)  NaN NaN NaN NaN ... (0.5742,75506)  NaN NaN NaN NaN NaN NaN (0.3631,75506)  NaN NaN
1   20161214    80856   IMAT list 1-3585-0-20161214-080856.csv  3585    NaN (0.2353,80856)  NaN NaN NaN NaN ... 12.8760 NaN NaN NaN NaN NaN NaN 1.0447  NaN NaN


我试过了

headers=new.columns.tolist()
for i, row in new.iterrows():
    val=row[headers[4:]].get_values()
    time=row['time']
    k=[(value,time) for value in val]
    new.set_value(i,headers[4:],k)


但我收到了
ValueError:使用ndarray设置时,必须具有相同的len键和值

可能是由于格式更改这一事实。我可以修改我的系列格式以使其工作吗?

干杯

最佳答案

我认为不需要显式迭代-您可以直接将时间压缩到使用df.apply索引的值列上。举个例子,

>>> df
     time vals1  vals2          vals3
0  332903   foo      4  <class 'int'>
1   42930   bar      3  <class 'str'>

>>> df.iloc[:, 1:] = df.iloc[:,1:].apply(lambda x: list(zip(df.time, x)))

>>> df
     time          vals1        vals2                    vals3
0  332903  (332903, foo)  (332903, 4)  (332903, <class 'int'>)
1   42930   (42930, bar)   (42930, 3)   (42930, <class 'str'>)

关于python - 将元组分配给 Pandas 中的单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42355454/

10-12 16:03