在数据框

时间:2017-05-12 15:21:52

标签: python pandas dataframe

我有一个具有以下结构的数据框:

   A B C
0  1 1 0
1  2 2 1
2  3 3 2
3  4 4 3

索引和列C都设置为具有相同的值。这是因为我创建了一个数据框,它使用日期作为索引来覆盖一年中的每一天,我有大量数据,其日期存放在C列。实际上我可以存储尽可能多的数据,这可以覆盖了一年中的大部分时间,但有些日子里没有数据,我的数据框架就是这样构成的。

我希望在一天内支持多个读数。目前我的程序通过将原始数据的日期与索引列中的日期相匹配来选择将数据放入哪一行,所以如果我有以下内容:

A B C
2 3 2

该行将由C列中的值选择并插入到数据框中,如下所示:

   A B C
0  1 1 0
1  2 2 1
2  2 3 2
3  4 4 3

我如何处理我在一天内有两组读数同时保持索引相同并根据列c值插入数据的情况。

像这样:

A B C
4 3 1
2 4 1

我希望能够拥有以下内容:

   A B C
0  1 1 0
1  4 3 1
1  2 4 1
2  2 3 2
3  4 4 3

我希望保持索引相同,以便数据框的结构保持相同,覆盖一年中的所有日期以及可以插入数据的天数,同时保持索引值相同。< / p>

1 个答案:

答案 0 :(得分:1)

这应该适合你:

<强>设定:

import pandas as pd
import io

a = io.StringIO(u'''
A B C
1 1 0
2 2 1
3 3 2
4 4 3
''')

df = pd.read_csv(a, delim_whitespace = True)

b = io.StringIO(u'''
A B C
4 3 1
2 4 1
''')

dfX = pd.read_csv(b, delim_whitespace = True)

<强>处理:

df = df.loc[~df['C'].isin(dfX['C'])]
df = df.append(dfX).sort_values(by = 'C')
df.index = df['C'].values

<强>输出:

   A  B  C
0  1  1  0
1  4  3  1
1  2  4  1
2  3  3  2
3  4  4  3