我有这样的.csv文件
ID FirstName LastName Age FirstName LastName Age
1 Sid Than 21 Sidd Thang 26
2 Art Mari 21 Arth Mariap 28
当我在python中使用pandas阅读此内容时,所有第二次出现的列名称都会自动更改为FirstName_y LastName_y Age_y。
现在,我想将df更改为这样,
Name_Key ID FirstName LastName Age
1_Sid_Than 1 Sid Than 21
1_Sidd_Thang 1 Sidd Thang 26
2_Art_Mari 2 Art Mari 21
2_Arth_Mariap 2 Arth Mariap 28
在我的情况下,ID是一个字符串。 我如何使用熊猫来做到这一点。
答案 0 :(得分:1)
提取两个不同数据框中的值,然后将它们连接起来
import pandas as pd
df = pd.read_csv('filename.csv')
df_1 = df[['ID', 'FirstName', 'LastName', 'Age']]
df_2 = df[['ID', 'FirstName_y', 'LastName_y', 'Age_y']]
df_2.columns = ['ID', 'FirstName', 'LastName', 'Age']
df = pd.concat([df_1, df_2], axis=0)
答案 1 :(得分:1)
List<int> JobHistory
可以重复多次
AddressDTO
答案 2 :(得分:1)
我将使用lambda函数来连接3列的项目。
我创建一个数据框:
df=pd.DataFrame([['Ann', 'Black',5], ['Peter','Black', 5], ['Laura','White', 8],
['Sean','Green',9]], index=[1,1,2,3],
columns=['Name', 'Family_name', 'Age'])
数据框:
Name Family_name Age
1 Ann Black 5
1 Peter Black 5
2 Laura White 8
3 Sean Green 9
我用索引生成一个新列ID
,并将新列的项从int转换为str,因为稍后我将其与字符串连接起来,所以所有3列都必须是str。>
df['col']=df.index.astype(str)
现在的数据框:
Name Family_name Age ID
1 Ann Black 5 1
1 Peter Black 5 1
2 Laura White 8 2
3 Sean Green 9 3
我应用了 lambda 函数:
col2=df['Family_name']
col1=df['Name']
col3=df['ID']
new=map(lambda row0,row1,row2:row0+'_'+row1+'_'+row2,col3,col1,col2)
new_list=list(new)
df['new']=new_list
您会得到:
Name Family_name Age ID new
1 Ann Black 5 1 1_Ann_Black
1 Peter Black 5 1 1_Peter_Black
2 Laura White 8 2 2_Laura_White
3 Sean Green 9 3 3_Sean_Green
然后您可以根据需要对列进行重新排序