【发布时间】:2017-10-27 20:19:07
【问题描述】:
我正在尝试为字典调用的数据框添加后缀。
下面是一个示例代码:
import pandas as pd
import numpy as np
from collections import OrderedDict
from itertools import chain
# defining stuff
num_periods_1 = 11
num_periods_2 = 4
num_periods_3 = 5
# create sample time series
dates1 = pd.date_range('1/1/2000 00:00:00', periods=num_periods_1, freq='10min')
dates2 = pd.date_range('1/1/2000 01:30:00', periods=num_periods_2, freq='10min')
dates3 = pd.date_range('1/1/2000 02:00:00', periods=num_periods_3, freq='10min')
# column_names = ['WS Avg','WS Max','WS Min','WS Dev','WD Avg']
# column_names = ['A','B','C','D','E']
column_names_1 = ['C', 'B', 'A']
column_names_2 = ['B', 'C', 'D']
column_names_3 = ['E', 'B', 'C']
df1 = pd.DataFrame(np.random.randn(num_periods_1, len(column_names_1)), index=dates1, columns=column_names_1)
df2 = pd.DataFrame(np.random.randn(num_periods_2, len(column_names_2)), index=dates2, columns=column_names_2)
df3 = pd.DataFrame(np.random.randn(num_periods_3, len(column_names_3)), index=dates3, columns=column_names_3)
sep0 = '<~>'
suf1 = '_1'
suf2 = '_2'
suf3 = '_3'
ddict = {'df1': df1, 'df2': df2, 'df3': df3}
frames_to_concat = {'Sheets': ['df1', 'df3']}
Suffs = {'Suffixes': ['Suffix 1', 'Suffix 2', 'Suffix 3']}
Suff = {'Suffix 1': suf1, 'Suffix 2': suf2, 'Suffix 3': suf3}
## appply suffix to each data frame selected in order HERE
# Suffdict = [Suff[x] for x in Suffs['Suffixes']]
# print(Suffdict)
df4 = pd.concat([ddict[x] for x in frames_to_concat['Sheets']],
axis=1,
join='outer')
我想为每个数据帧添加一个后缀,以便在连接数据帧时可以区分它们。我在调用它们然后将它们应用于每个数据帧时遇到了一些麻烦。所以我呼吁将 df1 和 df3 连接起来,我希望只将后缀 1 应用于 df1,并将后缀 2 应用于 df3。
如果 df2 和 df3 被称为后缀 1,则数据框后缀的顺序无关紧要,后缀 1 将应用于 df2,而后缀 2 将应用于 df3。显然最后一个后缀不会被使用。
【问题讨论】:
-
快速挑剔:您已将您的听写保存在字典中。所以,不可能给它们加上后缀...
-
会有更好的存储方式吗?也许是一个列表?什么会让他们更容易按顺序申请?
-
是的,我在回答中输入了一些解释。
标签: python python-3.x list pandas dictionary