Python 在数据帧中为单个索引值插入多组数据

Python 在数据帧中为单个索引值插入多组数据,python,pandas,dataframe,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
0  1 1 0
1  2 2 1
2  3 3 2
3  4 4 3
索引和列C都设置为具有相同的值。这是因为我创建了一个数据框架,它使用日期作为索引来覆盖一年中的每一天,并且我收集了大量的数据,这些数据的日期存储在C列中。实际上,我可以存储尽可能多的数据,这可以覆盖一年中的大部分时间,但有时会没有数据,而我的数据框架会丢失用这种方式来解释它

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

A B C
2 3 2
   A B C
0  1 1 0
1  4 3 1
1  2 4 1
2  2 3 2
3  4 4 3
行将由列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
2 3 2
   A B C
0  1 1 0
1  4 3 1
1  2 4 1
2  2 3 2
3  4 4 3

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

这应该可以为您做到:

设置:

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
处理:

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
输出:

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

cd123-让我们知道我的解决方案是否适用于您不幸的是,虽然此解决方案很有用,但我没有满足我的需要。部分原因是我没有在我的帖子中指定数据帧是我所拥有的数据的简化版本。否则,通过采用一种完全不同的方法,将我想要附加的元素插入到列表中,并在需要时将列表附加到框架中,然后进行排序,我就得到了我想要的东西。谢谢你的意见。