使用pandas python重新排列csv中的行值

皮亚尔·舒夫罗

我正在使用熊猫并有一个看起来像这样的 csv 文件

  ID                Name        Store      Price           
Melbourne           
    1               aaaa        bbbb        570
    2               cccc        dddd        236
    3               eeee        ffff        230
Sydney
    1               hhhh        gggg        2300
    2               kkkk        llll        266

我想要这个形状的

City            ID               Name        Store       Price      
Melbourne        1               aaaa        bbbb        570
Melbourne        2               cccc        dddd        236
Melbourne        3               eeee        ffff        230
Sydney           1               hhhh        gggg        23
Sydney           2               kkkk        llll        266

我在想的是
1. 添加一个新列

  ID        New               Name        Store      Price           
Melbourne   NaN  
    1       NaN               aaaa        bbbb        570
    2       NaN               cccc        dddd        236
    3       NaN               eeee        ffff        230
Sydney 
    1       NaN               hhhh        gggg        2300
    2       NaN               kkkk        llll        266
  1. 然后将索引更改为 ID。所以它看起来像这样

      ID       New      Name        Store      Price           
     Melbourne NaN  
     1         NaN      aaaa        bbbb        570
     2         NaN      cccc        dddd        236
     3         NaN      eeee        ffff        230
     Sydney    NaN
     1         NaN      hhhh        gggg        2300
     2         NaN      kkkk        llll        266
    
  2. 然后像这样

      ID         New              Name        Store      Price           
     Melbourne   NaN  
     Melbourne    1               aaaa        bbbb        570
     Melbourne    2               cccc        dddd        236
     Melbourne    3               eeee        ffff        230
     Sydney       NaN
     Sydney       1               hhhh        gggg        2300
     Sydney       2               kkkk        llll        266
    
  3. 最后更改列名并删除没有值的行

    City            ID              Name        Store      Price           
    Melbourne       1               aaaa        bbbb        570
    Melbourne       2               cccc        dddd        236
    Melbourne       3               eeee        ffff        230
    Sydney          1               hhhh        gggg        2300
    Sydney          2               kkkk        llll        266
    

    我不确定它是否可以实施。请给我一些关于如何实现这一点的想法。

用户3471881

有几种方法可以做到这一点,下面是一些关于如何实施您提出的方法的想法。

步骤1:

使用str.isalpha()方法检查字符串是否仅包含字母字符

df["column"].apply(lambda x: x if x.isalpha() else None)

以上将返回列中Series的数值ID为无。您可以将其存储在新列中。

此解决方案假定每个x都是字符串。


如果您不确定列中的所有数字都是字符串,您可以创建一个城市列表:

my_cities = ['Melbourne', 'Sydney']

然后检查列中的值是否为城市并将其存储在布尔值中Series

is_city = df['column'].isin(my_cities)

将 应用Series为掩码,并将值替换为None

df.loc[~is_city, 'column'] = None

(请注意,这~意味着“不是”,因此这将返回值“不是城市”的行)。

第2步:

使用ffill方法填充新列

df["new_column"].fillna(method="ffill")

ffill基本上在你的问题中做第3步。你可以在这里阅读它

第 3 步:

最后删除所有包含至少一个的行None

df.dropna()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于 Pandas 中的替代组重新排列或改组行

如何使用python重新排列数据帧的行?

从每列中删除零,然后使用python pandas / numpy重新排列

从每列中删除NaN并使用python pandas / numpy重新排列

如何用行/列中的变量/观察值重新排列数据框?(使用dplyr和tidyr)

Python:Pandas 数据框根据列中整数的最后三位数字重新排列行

使用python重新排列数据框

Pandas:拆分数据帧行并重新排列列值

Pandas 数据框 - 将行索引值重新排列为列标题

重新格式化和重新排列Python Pandas系列中的日期

Python / Pandas-从列值重新排列字符串

使用bash / awk / perl / sed重新排列不同列中的值

在Python Pandas中从Excel导入,并将元数据标题重新排列为列数据

ag-grid:使用拖放来重新排列网格中的行

重新排列数据框表 Pandas Python

重新排列python pandas数据框(部分转置)

在pandas数据框中基于顺序的列重新排列

读取,选择和重新排列Pandas中的列

使用 Pandas 根據列名重新排列行順序

如何在 Pandas 数据框中使用 NaN 重新排列/移动完整的行?

在多列上使用自定义顺序重新排列 Pandas 数据框的行

Excel使用宏从列到行重新排列数据

使用 python pandas 数据框重新排列连续数据日志

使用python自定义重新排列列表

僅使用 CSS 重新排列表格中的元素

如何使用 LINQ 中的条件重新排列选择结果

使用 VBA 重新排列 Powerpoint 中的图表

使用For循环对Pandas DataFrame进行排序和重新排列

如何使用公式或宏/VBA 自动将包含日期的行中的数据重新排列到 Excel 中的季度列