gpt4 book ai didi

python - 如何连接 pandas.DataFrames 列

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:14 24 4
gpt4 key购买 nike

我有一个名为 raw_df 的 DataFrame:

columns = ['force0', 'distance0', 'force1', 'distance1']

raw_data = [{'force0': 1.2, 'distance0': 0.0, 'force1': 0.5, 'distance1': 0.0},
{'force0': 1.3, 'distance0': 0.1, 'force1': 0.6, 'distance1': 0.0},
{'force0': 1.4, 'distance0': 0.2, 'force1': 0.7, 'distance1': 0.3},
{'force0': 1.5, 'distance0': 0.5, 'force1': 0.8, 'distance1': 0.6}]

raw_df = pd.DataFrame(raw_data, columns=columns)

raw_df 看起来像这样:

   force0  distance0  force1  distance1
0 1.2 0.0 0.5 0.0
1 1.3 0.1 0.6 0.0
2 1.4 0.2 0.7 0.3
3 1.5 0.5 0.8 0.6

目前没有索引,但我希望将距离列合并为一个索引,以便各列如下:

          force0  force1
distance
0.0 1.2 0.5
0.0 NaN. 0.6
0.1 1.3 NaN
0.2 1.4 NaN
0.3 NaN 0.7
0.5 1.5 NaN
0.6 NaN 0.8

请注意,对于 distance1 = 0.0,force1 中有 2 个条目。

索引(距离)不应排序:它们会不断增加然后减少,并且每个测试的原始顺序很重要。

Stefan 对我描述不善的问题发布了一个令人惊奇的答案,但它似乎用其他数字填充了任何缺失的力(这会产生误导,因为在这些测试中没有针对这些距离的力测量)。我使用 np.nan 来查找缺失值,因为我认为这就是 pandas 的作用。

我认为 mergejoin 可能可以满足我的需要,但无法理解 the docs .

也许 pandas.DataFrame 不是为此类数据设计的,我应该使用 numpy.genfromtxt 来代替,只需即时选择我需要的列:我不'如果我动态选择列(因为在这种情况下我没有使用索引),则看不到使用 pandas.DataFrame 的任何优势。

感谢您的帮助。

最佳答案

如果我理解正确,您将从与此类似的情况开始:

columns = list(sum(list(zip(['Forces{}'.format(i) for i in range(4)], ['Distances{}'.format(i) for i in range(4)])), ()))
df = pd.DataFrame(np.random.randint(1, 11, size=(100, 8)), columns=columns)

Forces0 Distances0 Forces1 Distances1 Forces2 Distances2 Forces3 \
0 3 5 8 3 7 4 2
1 1 4 10 9 9 3 6
2 10 3 1 3 3 7 8
3 2 1 3 6 10 10 10
4 4 2 9 1 3 10 8

Distances3
0 8
1 5
2 3
3 8
4 8

您的目标是拥有各种 Distance列形成一个index而相应的Force columns remain in place. You could像这样堆叠框架:

df.set_index([c for c in df.columns if c.startswith('Force')], inplace=True)
df = df.stack().reset_index(level=-1, drop=True).reset_index().rename(columns={0: 'Distance'})
df.set_index(['Distance'], inplace=True)

获取:

          Forces0  Forces1  Forces2  Forces3
Distance
9 7 4 6 7
9 7 4 6 7
1 7 4 6 7
6 7 4 6 7
5 1 2 3 1

关于python - 如何连接 pandas.DataFrames 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com