python - 如何迭代 DataFrame 并生成新的 DataFrame

标签 python pandas

我有一个如下所示的数据框:

P Q L
1 2 3
2 3 
4 5 6,7

目标是检查L中是否有值,如果有,提取LP列的值:

P L
1 3
4,6
4,7

注意 L 中可能有多个值,如果超过 1 个值,我需要两行。

下面是我当前的脚本,它无法生成预期的结果。

df2 = []
ego
other
newrow = []

for item in data_DF.iterrows():
    if item[1]["L"] is not None:
        ego = item[1]['P']
        other = item[1]['L']
        newrow = ego + other + "\n"
        df2.append(newrow)

data_DF2 = pd.DataFrame(df2)

最佳答案

首先,您可以提取 LP 列的所有行,其中 L 没有丢失,如下所示:

df2 = df[~pd.isnull(df.L)].loc[:, ['P', 'L']].set_index('P')

接下来,您可以按如下方式处理剩余的L行中的多个值:

df2 = df2.L.str.split(',', expand=True).stack()
df2 = df2.reset_index().drop('level_1', axis=1).rename(columns={0: 'L'}).dropna()
df2.L = df2.L.str.strip()

说明:以Pindex,代码将L列的string内容拆分到',' 并将各个元素分布在各个列中。然后它将各种新列堆叠成一个新列,并清理结果。

关于python - 如何迭代 DataFrame 并生成新的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064366/

相关文章:

python - 如何修复 'except ValueError' 处的无效语法错误?

python - 如何使用 Pandas 读取不包含标题的 CSV 文件,仅捕获第一列中的数据并执行删除?

python - pandas DataFrame 列中值的计数频率

python pandas 从价格数据帧创建相关矩阵

python - 如何将列的某些值乘以常数?

python - 比较 python 中的复杂 json 字符串

python - 获取 pandas groupby 中组的所有值

python - 如何重置 virtualenv 和 pip?

python - 如何以编程方式链接 slack 消息

python - 忽略 Pandas 数据框中的非数字字符串值