使用Python、Pandas和Excel发布的列;;
我正在尝试使用python和pandas处理Excel文件。此文件包含大量的列和行,但我将尝试使用以下示例来简化:使用Python、Pandas和Excel发布的列;;,python,excel,pandas,Python,Excel,Pandas,我正在尝试使用python和pandas处理Excel文件。此文件包含大量的列和行,但我将尝试使用以下示例来简化: Name Age Nationality Name1 Age1 Nationality1 Name2 Age2 Nationality2 Jane 32 Canada Pedro 25 Spain
Name Age Nationality Name1 Age1 Nationality1 Name2 Age2 Nationality2
Jane 32 Canada
Pedro 25 Spain
Lucas 30 Italy
Ana 23 Germany
Pedro 43 Brazil
Lucas 32 Mexico
因此,在这个例子中,我有列:姓名、年龄和国籍。但是,我也有名字、年龄和国籍。。因为我想按它的值过滤它,所以它不起作用,因为我必须过滤每一个:Name、Name1和Name2
我认为这可能是一个转换到不同词典并尝试过滤这些词典的选项。。但是考虑到列和行的数量,我想这需要更长的时间
我还想知道是否可以重命名这些列,但我搜索后发现它必须有唯一的名称。。如果我错了,请纠正我
有人能解决这个问题吗?会很有帮助的。
提前感谢您可以将所有列标题放入列表中。你能更具体地说你想要什么样的最终结果吗
列表(my_dataframe.columns.values)
您可以使用bfill(axis=1)
将每行中的第一个非空值复制到前一列中。在循环的第一次迭代中,所有名称列都将成功填充。如果将其设置为索引,然后将df中出现的所有其他名称替换为NaN,则可以在其余列上重复该过程,并最终得到所需的名称
import pandas as pd
import numpy as np
df = pd.read_csv('name_age_nationality.csv')
Name Age Nationality Name1 Age1 Nationality1 Name2 Age2 Nationality2
0 Jane 32.0 Canada NaN NaN NaN NaN NaN NaN
1 Pedro 25.0 Spain NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN Lucas 30.0 Italy NaN NaN NaN
3 NaN NaN NaN Ana 23.0 Germany NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN Pedro 43.0 Brazil
5 NaN NaN NaN NaN NaN NaN Lucas 32.0 Mexico
for x in ['Name','Age','Nationality']:
df = df.bfill(axis=1).set_index(x)
df = df.replace(df.index.values,np.nan).reset_index()
df[['Name','Age','Nationality']]
输出
Name Age Nationality
0 Jane 32 Canada
1 Pedro 25 Spain
2 Lucas 30 Italy
3 Ana 23 Germany
4 Pedro 43 Brazil
5 Lucas 32 Mexico
列是否总是按顺序排列,即姓名、年龄、国籍?是否可能是
姓名、年龄、国籍、国籍1、年龄1、姓名1
能否请您发布一个示例,说明您希望输出的内容。@datanovel,不完全是。。我想我可以更清楚地回答我的问题。。对不起。但是我们可以说我们也可以有“昵称,性别”。但是这些并不重复,它们在两个序列之间:“姓名,年龄,国籍”“昵称”“姓名1,年龄1,国籍1”“性别”“姓名2,年龄2,国籍2“@Chris,我只想一行写名字,另一行写年龄,另一行写国籍..”。。这样我就可以按名字过滤,比如:“佩德罗”。然后我会有两个结果。一名来自西班牙,25人;另一名来自巴西,43人。如果我想知道这张数据表中有多少人叫佩德罗,来自西班牙,那么我可以按年龄或国籍再次筛选。@Phil你能添加一些数据样本,模仿你上面所说的吗?