Python 按行连接值

Python 按行连接值,python,pandas,concat,Python,Pandas,Concat,给定数据帧df: 我只想在axis=1上附加以下结果的值: d e f appended a 0 [2] [3] [0,2,3] b [1] 0 [3] [1,0,3] c [0] [2, 3] [3, 1] [0,2,3,3,1] 令人惊讶的是,df['added']=df.sumaxis=1可以这样做,如果不是针对未列出的0值,它会为每行返回零 我知道这是一个愚蠢的问题,但我最近才开始研究熊

给定数据帧df:

我只想在axis=1上附加以下结果的值:

    d       e       f    appended
a    0     [2]     [3]   [0,2,3]
b  [1]       0     [3]   [1,0,3]
c  [0]  [2, 3]  [3, 1]   [0,2,3,3,1]
令人惊讶的是,df['added']=df.sumaxis=1可以这样做,如果不是针对未列出的0值,它会为每行返回零

我知道这是一个愚蠢的问题,但我最近才开始研究熊猫,我还没有对它有感觉

你能推荐点什么吗

@编辑

是的,我尝试用列表替换零,但我不想这样做,因为我需要这些零在我的原始df中保持零,而创建新df可能不是最佳选择:

def mk_list(x):
    if not isinstance(x, list):
        x = [x]
    return x 

df2 = df.apply(mk_list)
不管怎么说,这产生了所有的问题,我一定是做错了

d    [[nan, nan, nan]]
e    [[nan, nan, nan]]
f    [[nan, nan, nan]]

您可以将您的值应用到矩阵中,方法是在列表中循环使用您需要的值 希望将它们应用并附加到循环中的矩阵中

from numpy import *


# list, matrice that gets the values from the list ls
matrice = []

# list with values to apply

ls= [1,2,3,4]

for i in xrange(len(ls)):
    matrice.append([])
    for j in range(i):
        matrice[i].append(i+j)
print matrice
第二: 在标准化row/row.sum之后,使用NAN的数组是因为您首先为矩阵赋值,然后调用矩阵的标准化。你需要用另一种方法,你需要规范化矩阵,然后再次调用矩阵

1. create a matrice and assign some values
[[ 0.  2.  0.]
 [ 0.  0.  2.]
 [ 1.  1.  0.] 

matrice = stat_function()
2. Normalize rows, row /= row.sum()
[[ nan  nan  nan]
 [ nan  nan  nan]
 [ nan  nan  nan]

matrice = normalize_function()
3. Call the same matrice again
[[ 0.   1.   0. ]
 [ 0.   0.   1. ]
 [ 0.5  0.5  0. ]
matrice = stat_function()

为什么不先用[0]替换零呢?我试过了,请参见我的编辑。您需要使用applymap而不是apply来这样做。但更一般地说,在数据帧中使用列表可能会有点尴尬,而在某些值是列表,某些值是数字的列中使用列表也可能会有点尴尬。您好,谢谢您的回答,不过您确定这是一个相关的线程吗?这并没有发现我的问题。这取决于,您可以将数据帧转换为数组,这样附加值和规范化它们可能更容易,请参阅线程
1. create a matrice and assign some values
[[ 0.  2.  0.]
 [ 0.  0.  2.]
 [ 1.  1.  0.] 

matrice = stat_function()
2. Normalize rows, row /= row.sum()
[[ nan  nan  nan]
 [ nan  nan  nan]
 [ nan  nan  nan]

matrice = normalize_function()
3. Call the same matrice again
[[ 0.   1.   0. ]
 [ 0.   0.   1. ]
 [ 0.5  0.5  0. ]
matrice = stat_function()