Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将新列元素显式添加到DataFrame(Python 2)中的现有行_Python_Pandas_Append_Dataframe_Series - Fatal编程技术网

将新列元素显式添加到DataFrame(Python 2)中的现有行

将新列元素显式添加到DataFrame(Python 2)中的现有行,python,pandas,append,dataframe,series,Python,Pandas,Append,Dataframe,Series,我正在尝试向行中添加列,如中所示 我已经为列/行节点定义了所需的值。我想显式地添加到具有给定索引的行中,以增加列数(例如,DF.ix[“a”]=DF.ix[“a”]+pd.Series([4,5,6,7],name=“a”,index=list(“defg”)) 下面的代码可以工作,但是我如何在不创建新的数据帧并连接它们的情况下做到这一点呢?我的实际值很大,如果可以的话,我希望避免创建不必要的数据帧对象 #!/usr/bin/python import pandas as pd X = [[1

我正在尝试向行中添加列,如中所示

我已经为列/行节点定义了所需的值。我想显式地添加到具有给定索引的行中,以增加列数(例如,
DF.ix[“a”]=DF.ix[“a”]+pd.Series([4,5,6,7],name=“a”,index=list(“defg”))

下面的代码可以工作,但是我如何在不创建新的数据帧并连接它们的情况下做到这一点呢?我的实际值很大,如果可以的话,我希望避免创建不必要的数据帧对象

#!/usr/bin/python
import pandas as pd

X = [[1,2,3],[-1,-2,-3]]

r_labels = ["A","B"]         
c_labels = ["a","b","c"]

DF = pd.DataFrame(X)
DF.index = r_labels
DF.columns = c_labels

#I want to add columns [d,e,f,g] to each row
row1 = [('d', 4), ('e', 5), ('f', 6), ('g', 7)]
row2 = [('d', -4), ('e', -5), ('f', -6), ('g', -7)]
DF_tmp = pd.DataFrame()
for r_label,row in zip(DF.index,[row1,row2]):
    SR_row = pd.Series([x[1] for x in row],name=r_label,index=[x[0] for x in row])
    DF_tmp = DF_tmp.append(SR_row)

DF = pd.concat([DF, DF_tmp], axis=1, join_axes=[DF.index])#, how='outer', on=DF_tmp.columns)            

如果您只想添加一些随机整数和一些新列,那么您只需执行以下操作:

In [16]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=np.random.randint(0, 4,(2,4)), index=DF.index)], axis=1)

Out[16]:
   a  b  c  d  e  f  g
A  1  2  3  0  2  1  3
B -1 -2 -3  3  0  3  3
编辑

列出所需行值的列表,并构建df和
concat
它们:

In [20]:
new_A = [4,5,6,7]
new_B = [-4,-5,-6,-7]
l=[new_A,new_B]
l

Out[20]:
[[4, 5, 6, 7], [-4, -5, -6, -7]]

In [21]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=l, index=DF.index)], axis=1)

Out[21]:
   a  b  c  d  e  f  g
A  1  2  3  4  5  6  7
B -1 -2 -3 -4 -5 -6 -7

如果您只想添加一些随机整数和一些新列,那么您只需执行以下操作:

In [16]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=np.random.randint(0, 4,(2,4)), index=DF.index)], axis=1)

Out[16]:
   a  b  c  d  e  f  g
A  1  2  3  0  2  1  3
B -1 -2 -3  3  0  3  3
编辑

列出所需行值的列表,并构建df和
concat
它们:

In [20]:
new_A = [4,5,6,7]
new_B = [-4,-5,-6,-7]
l=[new_A,new_B]
l

Out[20]:
[[4, 5, 6, 7], [-4, -5, -6, -7]]

In [21]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=l, index=DF.index)], axis=1)

Out[21]:
   a  b  c  d  e  f  g
A  1  2  3  4  5  6  7
B -1 -2 -3 -4 -5 -6 -7

如果您只想添加一些随机整数和一些新列,那么您只需执行以下操作:

In [16]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=np.random.randint(0, 4,(2,4)), index=DF.index)], axis=1)

Out[16]:
   a  b  c  d  e  f  g
A  1  2  3  0  2  1  3
B -1 -2 -3  3  0  3  3
编辑

列出所需行值的列表,并构建df和
concat
它们:

In [20]:
new_A = [4,5,6,7]
new_B = [-4,-5,-6,-7]
l=[new_A,new_B]
l

Out[20]:
[[4, 5, 6, 7], [-4, -5, -6, -7]]

In [21]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=l, index=DF.index)], axis=1)

Out[21]:
   a  b  c  d  e  f  g
A  1  2  3  4  5  6  7
B -1 -2 -3 -4 -5 -6 -7

如果您只想添加一些随机整数和一些新列,那么您只需执行以下操作:

In [16]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=np.random.randint(0, 4,(2,4)), index=DF.index)], axis=1)

Out[16]:
   a  b  c  d  e  f  g
A  1  2  3  0  2  1  3
B -1 -2 -3  3  0  3  3
编辑

列出所需行值的列表,并构建df和
concat
它们:

In [20]:
new_A = [4,5,6,7]
new_B = [-4,-5,-6,-7]
l=[new_A,new_B]
l

Out[20]:
[[4, 5, 6, 7], [-4, -5, -6, -7]]

In [21]:
pd.concat([DF, pd.DataFrame(columns=list('defg'), data=l, index=DF.index)], axis=1)

Out[21]:
   a  b  c  d  e  f  g
A  1  2  3  4  5  6  7
B -1 -2 -3 -4 -5 -6 -7

既然你已经在循环,为什么不:

In [1]: df = pd.DataFrame([[1,2,3],[-1,-2,-3]], columns=list('abc'), index=list('AB'))

In [2]: for c in 'defg':
            df[c] = np.random.rand(len(df))

In [3]: df
Out[3]: 
   a  b  c         d         e         f         g
A  1  2  3  0.173682  0.332771  0.151931  0.250421
B -1 -2 -3  0.916427  0.664965  0.961631  0.512067
编辑:

根据您的评论,您可以随时将其更改为:

In [2]: for c, data in zip('defg', (d_data, e_data, f_data, g_data):
            df[c] = pd.Series(data, index=df.index)

既然你已经在循环,为什么不:

In [1]: df = pd.DataFrame([[1,2,3],[-1,-2,-3]], columns=list('abc'), index=list('AB'))

In [2]: for c in 'defg':
            df[c] = np.random.rand(len(df))

In [3]: df
Out[3]: 
   a  b  c         d         e         f         g
A  1  2  3  0.173682  0.332771  0.151931  0.250421
B -1 -2 -3  0.916427  0.664965  0.961631  0.512067
编辑:

根据您的评论,您可以随时将其更改为:

In [2]: for c, data in zip('defg', (d_data, e_data, f_data, g_data):
            df[c] = pd.Series(data, index=df.index)

既然你已经在循环,为什么不:

In [1]: df = pd.DataFrame([[1,2,3],[-1,-2,-3]], columns=list('abc'), index=list('AB'))

In [2]: for c in 'defg':
            df[c] = np.random.rand(len(df))

In [3]: df
Out[3]: 
   a  b  c         d         e         f         g
A  1  2  3  0.173682  0.332771  0.151931  0.250421
B -1 -2 -3  0.916427  0.664965  0.961631  0.512067
编辑:

根据您的评论,您可以随时将其更改为:

In [2]: for c, data in zip('defg', (d_data, e_data, f_data, g_data):
            df[c] = pd.Series(data, index=df.index)

既然你已经在循环,为什么不:

In [1]: df = pd.DataFrame([[1,2,3],[-1,-2,-3]], columns=list('abc'), index=list('AB'))

In [2]: for c in 'defg':
            df[c] = np.random.rand(len(df))

In [3]: df
Out[3]: 
   a  b  c         d         e         f         g
A  1  2  3  0.173682  0.332771  0.151931  0.250421
B -1 -2 -3  0.916427  0.664965  0.961631  0.512067
编辑:

根据您的评论,您可以随时将其更改为:

In [2]: for c, data in zip('defg', (d_data, e_data, f_data, g_data):
            df[c] = pd.Series(data, index=df.index)

您还可以使用预定值创建另一个数据帧
DF2
,并将
DF2
列添加到原始数据帧
DF

DF2 = pd.DataFrame(
    [[11,12,13,14],
    [15,16,17,18]], 
    columns = ('x', 'y', 'z', 'u'), index=['A', 'B'])
DF2
    x   y   z   u
A   11  12  13  14
B   15  16  17  18
DF[['d', 'e', 'f', 'g']] = DF2[['x', 'y', 'z', 'u']]
DF
a   b   c   d   e   f   g
A   1   2   3   11  12  13  14
B   -1  -2  -3  15  16  17  18

您还可以使用预定值创建另一个数据帧
DF2
,并将
DF2
列添加到原始数据帧
DF

DF2 = pd.DataFrame(
    [[11,12,13,14],
    [15,16,17,18]], 
    columns = ('x', 'y', 'z', 'u'), index=['A', 'B'])
DF2
    x   y   z   u
A   11  12  13  14
B   15  16  17  18
DF[['d', 'e', 'f', 'g']] = DF2[['x', 'y', 'z', 'u']]
DF
a   b   c   d   e   f   g
A   1   2   3   11  12  13  14
B   -1  -2  -3  15  16  17  18

您还可以使用预定值创建另一个数据帧
DF2
,并将
DF2
列添加到原始数据帧
DF

DF2 = pd.DataFrame(
    [[11,12,13,14],
    [15,16,17,18]], 
    columns = ('x', 'y', 'z', 'u'), index=['A', 'B'])
DF2
    x   y   z   u
A   11  12  13  14
B   15  16  17  18
DF[['d', 'e', 'f', 'g']] = DF2[['x', 'y', 'z', 'u']]
DF
a   b   c   d   e   f   g
A   1   2   3   11  12  13  14
B   -1  -2  -3  15  16  17  18

您还可以使用预定值创建另一个数据帧
DF2
,并将
DF2
列添加到原始数据帧
DF

DF2 = pd.DataFrame(
    [[11,12,13,14],
    [15,16,17,18]], 
    columns = ('x', 'y', 'z', 'u'), index=['A', 'B'])
DF2
    x   y   z   u
A   11  12  13  14
B   15  16  17  18
DF[['d', 'e', 'f', 'g']] = DF2[['x', 'y', 'z', 'u']]
DF
a   b   c   d   e   f   g
A   1   2   3   11  12  13  14
B   -1  -2  -3  15  16  17  18


我喜欢这个,它是如何指定A或B的?我实际上没有使用随机值,它们的定义非常复杂,但我可以在我的问题中解决这个问题。很抱歉造成混淆。我正在尝试您的编辑,但我仍然不确定行“A”和行“B”在哪里是为赋值指定的我喜欢这样,它是如何指定A或B的?我实际上没有使用随机值,它们的定义非常复杂,但我可以在我的问题中解决这个问题。很抱歉造成混淆。我正在尝试您的编辑,但我仍然不确定“A”行和“B”行的位置是为赋值指定的我喜欢这样,它是如何指定A或B的?我实际上没有使用随机值,它们的定义非常复杂,但我可以在我的问题中解决这个问题。很抱歉造成混淆。我正在尝试您的编辑,但我仍然不确定“A”行和“B”行的位置是为赋值指定的我喜欢这样,它是如何指定A或B的?我实际上没有使用随机值,它们的定义非常复杂,但我可以在我的问题中解决这个问题。很抱歉造成混淆。我正在尝试您的编辑,但我仍然不确定“A”行和“B”行的位置正在为分配指定。很抱歉,我想我提到了这些值是实际的预定值。我更改了问题的这一部分以减少混淆。我有新列的特定条目,需要转到特定的行标签。感谢您的编辑,我如何将其显式添加到a行而不是a行假设矩阵的顺序正确?是否仍然可以
DF.ix[r\u label]=DF.ix[r\u label].append(SR\u行)
where
SR\u row.index=list(“defg”)
?您必须构造一个新的df并在索引上合并才能做到这一点,我建议不要对任何大型df使用它,除了一次添加一行是无效的之外。最好是构造整个df并将其合并,正如我所表示的抱歉,我想我提到的,这些值是实际的预定值。我将该部分更改为我有新列的特定条目,需要转到特定的行标签。感谢您的编辑,我如何才能显式地将其添加到a行,而不是假设矩阵的顺序正确?是否仍然可以
DF.ix[r\u label]=DF.ix[r\u label].append(SR\u row)
其中
SR_row.index=list(“defg”)
?您必须构造一个新的df并在索引上合并才能做到这一点,我建议不要对任何大型df使用它,除了一次添加一行是无效的之外。最好是构造整个df并将其合并,正如我所表示的抱歉,我想我提到的,这些值是实际的预定值。我将该部分更改为我有新列的特定条目,需要转到特定的行标签。感谢您的编辑,我如何才能显式地将其添加到a行,而不是假设矩阵的顺序正确?是否仍然可以
DF.ix[r\u label]=DF.ix[r\u label].append(SR\u row)
其中
SR_row.index=list(“defg”)
?您必须构建一个新的df并在索引上合并才能做到这一点,我建议您重新开始