【问题标题】:How to reshape dataframe by extracting partial name of header in python?如何通过在python中提取标题的部分名称来重塑数据框?
【发布时间】:2021-05-11 20:42:23
【问题描述】:

我不知道如何根据部分标题名称使用某些列来重构数据框。

这是我得到的数据框。

Date        990986_125001_AA1234  990986_125002_AB2586  990986_125003_AA1234
2020-01-01           439.9                398.9                435.8 
2020-05-25           443.8                390.9                438.8  
2020-09-11           438.9                387.9                436.8     
2020-03-27           435.2                399.2                431.5
2020-07-30           434.6                387.2                422.5
2020-08-05           432.7                377.1                432.7

我想根据标头形成一个三个独立的数据框。 例如 df1 应该只包含以 990986_125001_****** 开头的列 df2 应该只包含以 990986_125002_****** 开头的列 df3 应该只包含以 990986_125003_****** 开头的列

分隔符是中间数字 (12500*),所以 df1 以 1 结尾,df2 以 2 结尾,df3 以 3 结尾。 我有 100 列。

所需的输出将是

df1
Date        990986_125001_AA1234  
2020-01-01           439.9       
2020-05-25           443.8
2020-09-11           438.9
2020-03-27           435.2             
2020-07-30           434.6           
2020-08-05           432.7 

第二个数据帧

df2
Date          990986_125002_AB2586  
2020-01-01           398.9               
2020-05-25           390.9               
2020-09-11           387.9              
2020-03-27           399.2            
2020-07-30           387.2               
2020-08-05           377.1   

第三个数据框

df3
Date        990986_125003_AA1234
2020-01-01         435.8 
2020-05-25         438.8  
2020-09-11         436.8     
2020-03-27         431.5
2020-07-30         422.5
2020-08-05         432.7
     

我在谷歌搜索过堆栈溢出,但他们只告诉我用调用标题的名称或索引或 iloc 来重塑列。

有人可以帮我重塑满足条件的数据框吗? 谢谢

【问题讨论】:

  • 您在列中也有990986_125002_CD5627,它属于哪个?

标签: python pandas


【解决方案1】:
import pandas as pd
dict1 = {}

df = pd.read_csv("data.csv")
for index, item in enumerate(df.columns.tolist()[1:]):
    if "1250" in item.split("_")[1]:

        dict1["df"+str(index)] = df[['Date', item]]

for keys in dict1.keys():
    print(keys)
    print(dict1[keys])

这将根据给定的测试数据创建您想要的答案。

【讨论】:

  • 您好,感谢您的回复。当我运行上面的代码时,我收到错误消息“IndexError:list index out or range”。
  • 我已经更改了列表,它说'AttributeError:'tuple'对象没有属性'split'。第 6 行发生错误
  • 您好,您可以删除第 6 行,然后再试一次。它没有被使用。再试一次,让我知道它是否有效。
猜你喜欢
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2018-01-03
相关资源
最近更新 更多