Zha*_*g18 7 append loc dataframe pandas
我可以使用.loc()以下方法在数据框中创建新行:
>>> df = pd.DataFrame({'a':[10, 20], 'b':[100,200]}, index='1 2'.split())
>>> df
a b
1 10 100
2 20 200
>>> df.loc[3, 'a'] = 30
>>> df
a b
1 10.0 100.0
2 20.0 200.0
3 30.0 NaN
Run Code Online (Sandbox Code Playgroud)
但是如何使用相同的方法创建多个行?
>>> df.loc[[4, 5], 'a'] = [40, 50]
...
KeyError: '[4 5] not in index'
Run Code Online (Sandbox Code Playgroud)
我熟悉.append(),但我正在寻找一种方法,不需要在附加到系列之前将新行构造到系列中df.
期望的输入:
>>> df.loc[[4, 5], 'a'] = [40, 50]
Run Code Online (Sandbox Code Playgroud)
期望的输出
a b
1 10.0 100.0
2 20.0 200.0
3 30.0 NaN
4 40.0 NaN
5 50.0 NaN
Run Code Online (Sandbox Code Playgroud)
最后添加2行的位置.
诚然,这是一个很晚的答案,但我不得不处理类似的问题,并且认为我的解决方案也可能对其他人有帮助。
重新创建数据后,基本上是一个两步方法:
重新创建数据:
import pandas as pd
df = pd.DataFrame({'a':[10, 20], 'b':[100,200]}, index='1 2'.split())
df.loc[3, 'a'] = 30
Run Code Online (Sandbox Code Playgroud)扩展df.index使用.reindex:
idx = list(df.index)
new_rows = list(map(str, range(4, 6))) # easier extensible than new_rows = ["4", "5"]
idx.extend(new_rows)
df = df.reindex(index=idx)
Run Code Online (Sandbox Code Playgroud)使用以下命令设置值.loc:
df.loc[new_rows, "a"] = [40, 50]
Run Code Online (Sandbox Code Playgroud)
给你
>>> df
a b
1 10.0 100.0
2 20.0 200.0
3 30.0 NaN
4 40.0 NaN
5 50.0 NaN
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2154 次 |
| 最近记录: |