如何将一个熊猫数据框架的多列与一个系列相结合?

发布于 2025-01-17 14:56:08 字数 606 浏览 0 评论 0原文

我有一个数据框架实际上有20列以上。下面的示例给出了4列。每列的行数量相等。如何将仅具有一列的新数据框架转换为新的数据帧(如下所示的Exmaple)。我将使用新的组合数据框架来计算一些指标。如何为此编写一个整洁有效的代码?太感谢了!

data={"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
pd.DataFrame.from_dict(data)

”在此处输入图像说明”

I have a data frame that has actually more than 20 columns. The example below give 4 columns. each column has equal number of rows. How to convert to a new dataframe(exmaple shown below) which has only one columns. I will use the new combined dataframe to calculate some metrics. How do I write a neat and efficient code for this? Thank you so much!

enter image description here

data={"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
pd.DataFrame.from_dict(data)

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄意 2025-01-24 14:56:08

您可以将 DataFrame 转换为 numpy 数组,并使用 将其展平ravel 方法。最后,用结果构造一个 Series(或 DataFrame)。

data = {"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
df = pd.DataFrame(data)

new_col = pd.Series(df.to_numpy().ravel(order='F'), name='new_col')

输出:

>>> new_col

0      1
1      2
2      3
3      5
4      6
5      7
6      8
7      9
8     10
9     11
10    12
11    14
12     7
13     8
14     9
15    10
Name: new_col, dtype: int64

You can convert the DataFrame to a numpy array and flatten it using the ravel method. Finally, construct a Series (or a DataFrame) with the result.

data = {"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
df = pd.DataFrame(data)

new_col = pd.Series(df.to_numpy().ravel(order='F'), name='new_col')

Output:

>>> new_col

0      1
1      2
2      3
3      5
4      6
5      7
6      8
7      9
8     10
9     11
10    12
11    14
12     7
13     8
14     9
15    10
Name: new_col, dtype: int64
绅刃 2025-01-24 14:56:08

如果您从字典开始,请使用 code>:

data={"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}

from itertools import chain
pd.DataFrame({'col': chain.from_iterable(data.values())})

Else, ravel< /code>the underlying numpy array:

df = pd.DataFrame.from_dict(data)
pd.Series(df.to_numpy().ravel('F'))

Output:

0      1
1      2
2      3
3      5
4      6
5      7
6      8
7      9
8     10
9     11
10    12
11    14
12     7
13     8
14     9
15    10
dtype: int64

Depending on the computation to perform, you might not even need to instantiate a DataFrame/Series and stick to the array:

a = df.to_numpy().ravel('F')

Output: array([ 1, 2, 3、5、6、7、8、9、10、11、12、14、7、8、9、10])

If you start from your dictionary, use itertools.chain:

data={"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}

from itertools import chain
pd.DataFrame({'col': chain.from_iterable(data.values())})

Else, ravel the underlying numpy array:

df = pd.DataFrame.from_dict(data)
pd.Series(df.to_numpy().ravel('F'))

Output:

0      1
1      2
2      3
3      5
4      6
5      7
6      8
7      9
8     10
9     11
10    12
11    14
12     7
13     8
14     9
15    10
dtype: int64

Depending on the computation to perform, you might not even need to instantiate a DataFrame/Series and stick to the array:

a = df.to_numpy().ravel('F')

Output: array([ 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 7, 8, 9, 10])

从﹋此江山别 2025-01-24 14:56:08

尝试使用melt

out = pd.DataFrame.from_dict(data).melt().drop(['variable'],axis=1)
Out[109]: 
    value
0       1
1       2
2       3
3       5
4       6
5       7
6       8
7       9
8      10
9      11
10     12
11     14
12      7
13      8
14      9
15     10

Try with melt

out = pd.DataFrame.from_dict(data).melt().drop(['variable'],axis=1)
Out[109]: 
    value
0       1
1       2
2       3
3       5
4       6
5       7
6       8
7       9
8      10
9      11
10     12
11     14
12      7
13      8
14      9
15     10
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文