在Python中添加两列
我正在尝试添加两列并创建一个新列。此新列应成为dataframe或输出csv文件中的第一列在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
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
正是我会给出的答案!值得投票和接受