gpt4 book ai didi

python - Python、Pandas 和 Excel 的列问题;;

转载 作者:行者123 更新时间:2023-12-04 09:38:36 25 4
gpt4 key购买 nike

我正在尝试使用 python 和 pandas 处理 Excel 文件。这个文件有大量的列和行,但我会尝试使用这个例子来简化:

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


My excel example

因此,在此示例中,我有以下列:姓名、年龄和国籍。但是,我也有 Name1、Age1 和 Nationality1。因为我想按它的值过滤它,所以它不起作用,因为我必须过滤每一个:Name、Name1 和 Name2。

我认为这可能是转换为不同字典并尝试过滤这些字典的一个选项。但考虑到列和行的数量,我想这需要更长的时间。

如果我可以重命名这些列,我也会坚持,但我搜索并看到它必须具有唯一的名称。如果我错了,请纠正我。

有人对此有解决方案吗?会很有帮助。
提前致谢

最佳答案

您可以使用 bfill(axis=1)将每行中的第一个非空值复制到前一列。在循环的第一次迭代中,所有 Name 列都将成功填充。如果您将其设置为索引,然后用 NaN 替换 df 中这些名称的所有其他出现,您可以在其余列上重复该过程并最终得到您想要的。

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

关于python - Python、Pandas 和 Excel 的列问题;;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62433590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com