相关疑难解决方法(0)

Python:用于元组的Pandas DataFrame

这是为元组创建DataFrame的正确方法吗?(假设元组是在代码片段内创建的)

import pandas as pd
import numpy as np
import random

row = ['a','b','c']
col = ['A','B','C','D']

# use numpy for creating a ZEROS matrix
st = np.zeros((len(row),len(col))) 
df2 = pd.DataFrame(st, index=row, columns=col)

# CONVERT each cell to an OBJECT for inserting tuples
for c in col:
    df2[c] = df2[c].astype(object)

print df2

for i in row:
    for j in col:
        df2.set_value(i, j, (i+j, np.round(random.uniform(0, 1), 4)))

print df2
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我首先创建了一个zeros(3,4)numpy,然后在Pandas中使每个单元格成为OBJECT类型,这样我就可以插入元组了.这是正确的做法,还是有更好的ADD/RETRIVE元组到矩阵的解决方案?

结果很好:

   A  B  C  D
a  0  0  0 …
Run Code Online (Sandbox Code Playgroud)

python tuples numpy pandas

3
推荐指数
1
解决办法
4863
查看次数

结合两列给出 ValueError: Wrong number of items传递 2,放置意味着 1

我有一个简单的数据框:

import pandas as pd
d = pd.DataFrame({'a':[[1], [2], [3]], 'b': [[4], [5], [6]]}) 
print d
  a    b
  0  [1]  [4]
  1  [2]  [5]
  2  [3]  [6]
Run Code Online (Sandbox Code Playgroud)

我想得到

  combined
 0   [1, 4]
 1   [2, 5]
 2   [3, 6]
Run Code Online (Sandbox Code Playgroud)

我使用了以下

d['combined'] = d.apply(lambda row: row.a + row.b, axis=1)
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

ValueError: Wrong number of items passed 2, placement implies 1
Run Code Online (Sandbox Code Playgroud)

为什么会

d['combined'] = d.apply(lambda row: row.a[0] + row.b[0], axis=1)
Run Code Online (Sandbox Code Playgroud)

会工作(虽然不是我需要的),但是我上面的代码给出了错误?

更新:

实际上我的原始代码更像是这样的:

d = pd.DataFrame({'a':[[1, 2], [2, 3], [3, 4]], 'b': [[4, …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
1
解决办法
4707
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

numpy ×1

tuples ×1