![](/img/trans.png)
[英]Get column names of a data frame based on values from a list in pandas python
[英]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.stack
与Series.reset_index
和drop=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.