Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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
在Python中添加两列_Python_Python 3.x_String_Pandas_Dataframe - Fatal编程技术网

在Python中添加两列

在Python中添加两列,python,python-3.x,string,pandas,dataframe,Python,Python 3.x,String,Pandas,Dataframe,我正在尝试添加两列并创建一个新列。此新列应成为dataframe或输出csv文件中的第一列 column_1 column_2 84 test 65 test 输出应该是 column column_1 column_2 trial_84_test 84 test trial_65_test 65 test 我尝试了以下给定的方法,但它们不起作用: sum = str(data['column_1']) + data['co

我正在尝试添加两列并创建一个新列。此新列应成为dataframe或输出csv文件中的第一列

column_1 column_2
84       test
65       test
输出应该是

column         column_1 column_2
trial_84_test   84      test
trial_65_test   65      test
我尝试了以下给定的方法,但它们不起作用:

sum = str(data['column_1']) + data['column_2']

data['column']=data.apply(lambda x:'%s_%s_%s' % ('trial' + data['column_1'] + data['column_2']),axis=1)

我们当然感谢你的帮助

不要为此使用
lambda
,因为它只是一个薄薄的环。这是一个矢量化的解决方案。需要注意将非字符串值转换为
str
类型

df['column'] = 'trial_' + df['column_1'].astype(str) + '_' + df['column_2']

df = df.reindex_axis(sorted(df.columns), axis=1)  # sort columns alphabetically
结果:

          column  column_1 column_2
0  trial_84_test        84     test
1  trial_65_test        65     test

创建样本数据

df = pd.DataFrame({'column_1': [84, 65], 'column_2': ['test', 'test']})
df.insert(0, 'column', df.astype(str).apply(lambda row: 'test_' + '_'.join(row), axis=1))
方法1:用于创建新列,然后重新排序

>>> df.assign(column=['trial_{}_{}'.format(*cols) for cols in df.values])[['column'] + df.columns.tolist()]
          column  column_1 column_2
0  trial_84_test        84     test
1  trial_65_test        65     test
方法2:创建一个新的系列,然后单击

方法3:数据帧第一个索引处的新值(即第0列)

方法3(为新列创建值的替代方法)

df = pd.DataFrame({'column_1': [84, 65], 'column_2': ['test', 'test']})
df.insert(0, 'column', df.astype(str).apply(lambda row: 'test_' + '_'.join(row), axis=1))

顺便说一下,是一个关键字,因此您不想将其用作变量名。

您可以使用
插入

df.insert(0,column='Columns',value='trial_' + df['column_1'].astype(str)+ '_'+df['column_2'].astype(str)
)
df
Out[658]: 
         Columns  column_1 column_2
0  trial_84_test        84     test
1  trial_65_test        65     test

正是我会给出的答案!值得投票和接受