【问题标题】:Python 3 | How to print the dataframes by their names once they are created dynamically?蟒蛇 3 |动态创建数据框后如何按名称打印数据框?
【发布时间】:2021-07-14 01:53:44
【问题描述】:

我有一个 Dataframe df_main 包含以下列:

ID Category Time Status XYZ
1 A value value value
2 B value value value
3 C value value value
4 D value value value
5 E value value value

使用以下代码,我根据表中的类别创建了新的数据框。我已经创建了一个 Dataframe 字典并以这种格式创建了数据框 df_Adf_Bdf_C... 我已将该行存储在与类别名称等效的新数据框中。因此,df_A 将拥有来自df_main 的行,该行具有类别值“A”。

代码:

dict_of_df = {} # initialize empty dictionary

i=0
for index, row in df_main.iterrows():
    
    if i<5:
        newname = df_main['Category'].values[i]
        dict_of_df["df_{}".format(newname)] = row
        
    i=i+1

我想通过数据框名称打印数据框,而不是通过迭代字典。 应该是这样的:

print(df_A)
print(df_B)
print(df_C)
print(df_D)
print(df_E)

我怎样才能做到这一点? 不使用字典的解决方案也可以。只要我能够将特定类别的一行存储在特定于类别名称的新数据框中并使用数据框名称打印它,任何解决方案都可以。

如果需要更多详细信息,请告诉我。

编辑:

这个链接有点类似于我的用例: Using String Variable as variable name

我想具体到数据帧,因为我的最终目标是按名称打印数据帧。

该链接的答案中提到的方法特定于变量,并且需要使用 exec 数据帧方法的不同代码解决方案。

此代码背后的想法是将其包含在 Power BI 中。在 Power BI 中使用 python 脚本获取源接受数据帧作为表,为此,我必须在代码中声明或打印数据帧。

【问题讨论】:

  • 这能回答你的问题吗? Using a string variable as a variable name
  • 使用字典print(dict_of_df["df_A"])???
  • 使用字典有什么问题?也可以缩短您的代码 - 尝试:dfs = {f"df_{cat}" : grp for cat,grp in df.groupby('Category')}
  • 如果你不介意写print(dict_of_df.df_A) 之类的东西,这个答案对你来说有很多选择:stackoverflow.com/questions/3031219/… 恕我直言,我会使用最后一个答案,它提供了一个函数来转换python dict 到一个名为 PropertyTree 的辅助对象中。
  • @nidabdella 不,我认为它没有回答。

标签: python python-3.x pandas dataframe dictionary


【解决方案1】:

更改您的数据框源

import pandas as pd

df_main = pd.read_excel('main.xlsx') # use data source as per your requirement 

dict_of_df = {}  # initialize empty dictionary

i = 0
for index, row in df_main.iterrows():
    if i < 5:
        print('df_'+row['Category'])
        newname = df_main['Category'].values[i]
        dict_of_df["df_{}".format(newname)] = row

    i = i + 1

【讨论】:

  • 为什么建议更改它?另外我无法更改它,因为数据源会不断更新,我会将这段代码放入 Power BI 中,这可能会增加处理时间。
  • 我使用了一个 excel pd.read_excel('main.xlsx') ,在 excel 的地方你可以根据你的要求使用任何其他方法,它可能是 DB、API 等。 .. 它不会产生任何差异
  • 我的数据源是SQL。
  • df = pd.read_sql_table('TableName',connection)....geeksforgeeks.org/… ....................................@ 987654322@
猜你喜欢
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2017-12-10
  • 1970-01-01
相关资源
最近更新 更多