繁体   English   中英

Pandas 从列名列表中获取数据

[英]Pandas get data from a list of column names

我有一个 pandas dataframe: df和列名列表: 像这样的columns

df = pd.DataFrame({
    'A': ['b','b','c','d'],
    'C': ['b1','b2','c1','d2'],
    'B': list(range(4))})

columns = ['A','B']

现在我想在一个系列中从 dataframe 的这些列中获取所有数据,如下所示:

b
0
b
1
c
2
d
4

这是我尝试过的:

srs = pd.Series()
srs.append(df[column].values for column in columns)

但它抛出了这个错误:

TypeError: 无法连接类型为“<class 'generator'>' 的 object; 只有 Series 和 DataFrame 对象有效

我该如何解决这个问题?

我认为您可以使用numpy.ravel

srs = pd.Series(np.ravel(df[columns]))
print (srs)
0    b
1    0
2    b
3    1
4    c
5    2
6    d
7    3
dtype: object

DataFrame.stackSeries.reset_indexdrop=True

srs = df[columns].stack().reset_index(drop=True)

如果可以更改订单,请使用DataFrame.melt

srs = df[columns].melt()['value']
print (srs)
0    b
1    b
2    c
3    d
4    0
5    1
6    2
7    3
Name: value, dtype: object

你可以这样做:

from itertools import chain

import pandas as pd
df = pd.DataFrame({
    'A': ['b','b','c','d'],
    'C': ['b1','b2','c1','d2'],
    'B': list(range(4))})

columns = ['A','B']

res = pd.Series(chain.from_iterable(df[columns].to_numpy()))
print(res)

Output

0    b
1    0
2    b
3    1
4    c
5    2
6    d
7    3
dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM