Python 按行连接值
给定数据帧df: 我只想在axis=1上附加以下结果的值: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值,它会为每行返回零 我知道这是一个愚蠢的问题,但我最近才开始研究熊
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()