举个例子:
import pandas as pd
import pathlib
from pathlib import Path
cwd = Path('Path/to/somewhere')
df = pd.DataFrame(
{
'var1': [0, 5, 10, 15, 20, 25],
'var2': ['A', 'B']*3,
'var3': ['A', 'B']*3,
'path_col': [cwd / 'a.dat', cwd / 'b.dat', cwd / 'c.dat', cwd / 'd.dat', cwd / 'e.dat', cwd / 'f.dat'],
}
)
字符串path_col
中的每个路径都指向一个嵌套,我有一个函数将其转换为嵌套,例如:
def open_and_convert_to_df(filepath: pathlib.Path):
# do things
return pd.Dataframe(...)
data_df = pd.DataFrame(
{
'var4': [10, 20, 30],
'var5': [100, 200, 300],
'obs': [1000, 2000, 3000],
}
)
我想从path_col
中的每个路径生成一个data_df,并合并到df
中,这样最终的df看起来像这样:
var1 var2 var3 var4 var5 obs
0 0 A 1 10 100 1000
1 0 A 1 10 100 2000
2 0 A 1 10 100 3000
3 0 A 1 10 200 1000
4 0 A 1 10 200 2000
5 0 A 1 10 200 3000
6 0 A 1 10 300 1000
...
n-3 25 B 2 30 200 3000
n-2 25 B 2 30 300 1000
n-1 25 B 2 30 300 2000
n 25 B 2 30 300 3000
型
换句话说,第一个df的变量1到3是path_col
中包含的数据的索引。在这个数据中,var 4和5是obs
的索引。我试图用从1到5的所有变量索引obs
。
到目前为止,我想到的最好的方法是像这样使用.map()
方法:
df['path_col'] = df['path_col'].map(open_and_convert_to_df)
型
我最终在每个path_col
元素中得到了正确的df,但是我缺少后续步骤来“取消嵌套”这些元素并获得所需的df。
1条答案
按热度按时间rslzwgfq1#
假设你想要某种类型的
join
或每一行都有函数的输出,你可以使用concat
:字符串
使用的输入:
型