使用Pandas将列表中的另一个项目添加到数据框中的每个单元格

时间:2018-08-28 18:36:17

标签: python pandas dataframe lambda apply

给出一个数据框

df = pd.DataFrame(np.random.randint(0,100,size=(15, 4)), columns=list('ABCD'))

我想列出一个顺序表,该表具有与数据框中的行数一样多的元素

l = [i for i in range(df['A'].count())]

然后将列表的每个元素(作为字符串)添加到数据帧中单列的末尾。

df['A'] = df['A'].apply(lambda x: str(x) + str(l[i]))

不起作用,因为它将整个列表作为字符串添加到每个值,而不是数据框中每个值的列表值。

基本上,我想转型

A    B    C
23   16   85
 9   74   12
99   24   83

A     B    C
231   16   85
 92   74   12
993   24   83  

因此无论如何都可以。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

尝试:

df['A'] = df.A.astype(str) + (df.index+1).astype(str)

>>> df
     A   B   C
0  231  16  85
1   92  74  12
2  993  24  83

假设您的数据框具有常规RangeIndex。如果没有,您可以使用:

df['A'] = df.A.astype(str) + (df.reset_index().index + 1).astype(str)

df['A'] = df.A.astype(str) + (pd.RangeIndex(len(df)) + 1).astype(str)