所以我的数据框是由许多单独的excel文件组成的,每个文件都以日期为文件名,并在电子表格中显示当天水果的价格,所以电子表格看起来像这样:
15012016:
Fruit Price
Orange 1
Apple 2
Pear 3
16012016:
Fruit Price
Orange 4
Apple 5
Pear 6
17012016:
Fruit Price
Orange 7
Apple 8
Pear 9
因此,为了将所有这些信息放在一起,我运行以下代码将所有信息放入数据帧字典中(所有水果价格文件存储在“C:\fruit\u Prices\u by\u Day”中)
#find all the file names
file_list = []
for x in os.listdir('C:\Fruit_Prices_by_Day'):
file_list.append(x)
file_list= list(set(file_list))
d = {}
for date in Raw_list:
df1 = pd.read_excel(os.path.join('C:\Fruit_Prices_by_Day', date +'.xlsx'), index_col = 'Fruit')
d[date] = df1
这就是我被困的地方。然后,我如何将这个dict放入一个数据框,其中列名是dict键,即日期,这样我就可以在同一个数据框中得到每天每个水果的价格,如:
15012016 16012016 17012016
Orange 1 4 7
Apple 2 5 8
Pear 3 6 9
类似这样的方法可以工作:在字典上循环,用字典键添加常量列,连接,然后将日期设置为索引
pd.concat(
(i_value_df.assign(date=i_key) for i_key, i_value_df in d.items())
).set_index('date')
解决方案:
pd.concat(d, axis=1).sum(axis=1, level=0)
说明:
在.concat(d,轴=1)
之后,您将获得
15012016 16012016 17012016
Price Price Price
Fruit
Orange 1 4 7
Apple 2 5 8
Pear 3 6 9
添加.sum(轴=1,级别=0)
将其转换为
15012016 16012016 17012016
Fruit
Orange 1 4 7
Apple 2 5 8
Pear 3 6 9
您可以先尝试设置
理解
中所有数据帧的索引
,然后使用concat
删除列中最后一级的多索引
:
print d
{'17012016': Fruit Price
0 Orange 7
1 Apple 8
2 Pear 9, '16012016': Fruit Price
0 Orange 4
1 Apple 5
2 Pear 6, '15012016': Fruit Price
0 Orange 1
1 Apple 2
2 Pear 3}
d = { k: v.set_index('Fruit') for k, v in d.items()}
df = pd.concat(d, axis=1)
df.columns = df.columns.droplevel(-1)
print df
15012016 16012016 17012016
Fruit
Orange 1 4 7
Apple 2 5 8
Pear 3 6 9
情况: 两个数据帧(df1和df2)具有相同的三个索引,例如“A”、“B”、“C”。df1和df2的列数不同。df1和df2中的所有单元格都填充了float类型的数据。 DF1: DF2: 目标: 从df2中选择的列(例如“BBB”)与df1的每列相加后,结果应存储在新的数据帧(df_new)中。df_new的格式应为df1(列数和行数),并具有与df1相同的列名和索引。 new_df: 我的做法
我有两个数据框,都包含英文和中文单词字符串,我想知道其中一个是另一个的子集:
我有两个不同列数和行数的CSV文件。第一个CSV文件有M列和N行,第二个文件有H列和G行。一些列具有相同的名称。 null 另外,如果两个CSV文件有两个数据帧,并希望这样做,例如,如果我将第一个CSV加载到中,将第二个加载到中,然后希望合并到,类似于上面的示例。
我有两个数据帧df1和df2 df1如下 df2就像 我想根据df2中与df1中的列名匹配的单元格值将值从df1复制到df2,所以我的df3应该看起来像 df3 基本上,我想根据df2的单元格值(df1中的列名)从df1复制df2中的列 如果它仍然令人困惑,请告诉我
我有两个数据帧,它们的列名相同,但行数不同。第一个数据帧(a)看起来与此类似: 注:站点5、6、8和12故意丢失。 第二个数据帧(b)看起来像这样: 我想要实现的是: 在那里我注入(我肯定有一个更好的术语)数据帧b到数据帧a的数据,但是我想用零替换b中的任何NAs,并保持a中的NAs不变。 我发现并尝试了这个代码: 但它会带来NAs。我考虑先将NAs替换为零,但即使如此,它也会抹去我目前在数据帧a
我有两个数据帧df1和df2。df1就像一个具有以下值的字典 df2具有以下值: 我想基于df1数据帧中的,将df2拆分为3个新的数据帧。 日期,TLRA_权益栏应位于数据框 预期产出: > 数据帧 消费者,非周期性数据帧 请让我知道如何有效地做。我想做的是连接列名,例如,然后根据列名的前半部分分割数据帧。 代码: 但这很复杂。需要更好的解决方案。